Foutmelding 13

Status
Niet open voor verdere reacties.

ThomasGHI

Gebruiker
Lid geworden
1 feb 2019
Berichten
37
De code werkte eerst maar nu niet meer?
Ik denk dat het tussen regel 6 en 19 zit maar ben niet zeker.

Foutopsporing leid naar commandobutton, maar code is enkel om formulier te open

HTML:
Private Sub cmdopen_2_Click()
    Userform1.Show
End Sub



HTML:
Option Explicit

Dim blnNew As Boolean
Dim Dic As Object, i As Long

Private Sub UserForm_Initialize()
  
    cmdSave.Enabled = False
    Frame2.Enabled = False
    
Dim sv, i As Long
sv = Sheets(1).Cells(1).CurrentRegion
   Set Dic = CreateObject("scripting.dictionary")
    For i = 1 To UBound(sv)
      If Not Dic.exists(sv(i, 1)) Then Dic.Item(sv(i, 1)) = Array(sv(i, 1), CreateObject("scripting.dictionary"), CreateObject("scripting.dictionary"))
        Dic(sv(i, 1))(1).Item(sv(i, 2)) = Dic(sv(i, 1))(1).Item(sv(i, 2))
        Dic(sv(i, 1))(2).Item(sv(i, 2)) = Array(sv(i, 2), Application.Index(sv, i, Array(1, 3, 6, 7, 10, 11)), i)
    Next i
 ComboBox2.List = Dic.keys


Dim wb As Workbook: Set wb = ThisWorkbook
Dim WS As Worksheet
Dim LastRow As Long
Dim aCell As Range

Set WS = wb.Sheets("Type data")

With WS
    LastRow = .Cells(.Rows.Count, "C").End(xlUp).Row
    
    For Each aCell In .Range("C1:C" & LastRow)
        If aCell.Value <> "" Then
            Me.TextBox2.AddItem aCell.Value
        End If
    Next
End With



Set WS = wb.Sheets("Type data")

With WS
    LastRow = .Cells(.Rows.Count, "O").End(xlUp).Row
    
    For Each aCell In .Range("O1:O" & LastRow)
        If aCell.Value <> "" Then
            Me.TextBox5.AddItem aCell.Value
        End If
    Next
End With
End Sub

Private Sub cmdClose_Click()
    If cmdClose.Caption = "Close" Then
        Unload Me
    Else
        cmdClose.Caption = "Close"
        cmdNew.Enabled = True
        
        
    End If
End Sub

Private Sub cmdNew_Click()
    blnNew = True
    txtklant.Text = ""
    txttype.Text = ""
    txtdossier.Text = ""
    txtdatum.Text = ""
    txtbestand.Text = ""
    txtbestemming.Text = ""
    
    cmdClose.Caption = "Cancel"
    cmdNew.Enabled = False
    cmdSave.Enabled = True
    Frame2.Enabled = True
End Sub

Private Sub cmdSave_Click()
    If Trim(txtklant.Text) = "" Then
        MsgBox "Enter klant", vbCritical, "Save"
        txtklant.SetFocus
        Exit Sub
    End If
    Call prSave
    cmdClose.Caption = "Close"
    cmdNew.Enabled = True
    ThisWorkbook.Save
    
End Sub
Private Sub prSave()
     ''''' Save the dms
    If blnNew = True Then
        TRows = Worksheets("dms").Range("A1").CurrentRegion.Rows.Count
        With Worksheets("dms").Range("A1")
            .Offset(TRows, 0).Value = txtklant.Text
            .Offset(TRows, 1).Value = txttype.Text
            .Offset(TRows, 2).Value = txtdossier.Text
            .Offset(TRows, 3).Value = txtdatum.Text
            .Offset(TRows, 4).Value = txtbestand.Text
            .Offset(TRows, 11).Value = txtbestemming.Text
         End With
            txtklant.Text = ""
            txttype.Text = ""
            txtdossier.Text = ""
            txtdatum.Text = ""
            txtbestand.Text = ""
            txtbestemming.Text = ""
            Call prComboBoxFill
     Else
        For i = 2 To TRows
            If Trim(Worksheets("dms").Cells(i, 1).Value) = Trim(ComboBox3.Text) Then
                Worksheets("dms").Cells(i, 1).Value = txtklant.Text
                Worksheets("dms").Cells(i, 2).Value = txttype.Text
                Worksheets("dms").Cells(i, 3).Value = txtdossier.Text
                Worksheets("dms").Cells(i, 4).Value = txtdatum.Text
                Worksheets("dms").Cells(i, 5).Value = txtbestand.Text
                Worksheets("dms").Cells(i, 13).Value = txtbestemming.Text
                txtklant.Text = ""
                txttype.Text = ""
                txtdossier.Text = ""
                txtdatum.Text = ""
                txtbestand.Text = ""
                txtbestemming.Text = ""
                Exit For
            End If
        Next i
      End If
    blnNew = False
    
    If Trim(txtklant.Text) = "" Then
        cmdSave.Enabled = False
        Frame2.Enabled = False
    Else
        cmdSave.Enabled = True
        Frame2.Enabled = True
    End If
End Sub

Private Sub cmdSearch_Click()
 Userform1.Show
End Sub

Private Sub ComboBox2_Change()
 hsv
 ComboBox3.List = Dic(ComboBox2.Value)(1).keys
 ComboBox3.ListIndex = -1
End Sub


Private Sub ComboBox3_Change()
If ComboBox3.ListIndex > -1 Then
  For i = 1 To 6
         Controls("Textbox" & i).Value = Dic(ComboBox2.Value)(2)(ComboBox3.Value)(1)(i)
     
  Next i
 End If
End Sub

Private Sub hsv()
ComboBox3.ListIndex = -1
For i = 1 To 6
   Me.Controls("TextBox" & i).Value = ""
 Next i
End Sub


Private Sub Image1_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As MSForms.fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)

End Sub

Private Sub Image2_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As MSForms.fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)

End Sub
 

Bijlagen

  • test_DMS.xlsm
    960,6 KB · Weergaven: 66
Dan gaat het dus fout in de Userform_Initialize, en wel hier:
For i = 1 To UBound(sv)

De variabele sv is daar leeg.
Sheets(1) is het tabblad Home en dat lijkt me niet de bedoeling.
 
Laatst bewerkt:
@puppie: Is het niet toegelaten om op een ander forum ook mijn vraag daar te mogen stellen?

Het is soms dat een vraag niet geholpen wordt en dan is het ook logisch om op een ander forum ook eens te vragen in de hoop van geholpen te kunnen worden.

@edmoor: bedankt voor de tip, heb dit ondertussen kunnen oplossen.
 
Laatst bewerkt door een moderator:
Graag gedaan.

Wat puppie bedoelt is dat het geen enkel probleem is om je vraag op meerdere fora uit te zetten maar dat het dan netjes is om dat op die verschillende fora wel even te melden, met een link er bij. Dit, om te voorkomen dat meerdere mensen tegelijk voor je bezig zijn of antwoorden geven die ergens anders al zijn gegeven.
 
Zal voor de volgende keer hiermee rekening houden, mijn excuses hiervoor.

Ondertussen ijverig verder aan het schrijven in mijn excel.

Ik zoek momenteel een VBA code die mij toelaat dat als een rij met waarden word aangemaakt er in een bepaalde cel automatisch een uniek nummer gegenereerd word, zoiets in de vorm van een vaste letter en 7 cijfers (vb. R3458765)
Deze unieke code zou ook niet mogen terugkomen als er een nieuwe rij aangemaakt wordt.
 
Momenteel heb ik deze code maar deze overschrijft steeds de vorige en houdt nog geen rekening met de rijen waar een waarde reeds aanwezig is en staat er ook nog geen letter ervoor.


Code:
Sub UniekeGetallenTussen()
Dim Min As Long, Max As Long
Dim i As Long, Getal As Long
   
    'Bepaal de minimum- en maximumwaarde:
    Min = 1000000
    Max = 9999999
    'Geef het aantal getallen op:
    Aantal = 1 'LET OP: dit mag niet groter zijn dan Max !
    Application.ScreenUpdating = True
   
   TRows = Worksheets("blad1").Range("F1").CurrentRegion.Rows.Count
           
   
    'Columns("F:F").Select
        
     For i = 1 To Aantal
        Do
            Getal = Rnd * (Max - Min)
            Getal = Getal + Min
        Loop Until Range("F1:F" & i).Find(Getal, LookAt:=xlWhole) Is Nothing
        Range("F" & i) = Getal
    Next i
  
End Sub

De bedoeling is dat als er er een waarde bv. in rij 1 in een kolom aanwezig is er een unieke code komt in rij 1 kolom B (bv)
Wanneer er een waarde in rij 2 komt te staan in één van de andere kolommen met uitzondering die van B er terug een uniek getal gegenereerd wordt in kolom B van rij 2 zonder dat de unieke code in de bovenliggende rijen van kolom B wijzigt.

Kan iemand helpen?
 
Laatst bewerkt door een moderator:
Plaats een voorbeeld document waarin e.e.a. duidelijk is.
 
Ik heb het bestand unieke code bijgevoegd waar ik aan het testen ben met de code en mijn hoofdbestand waar deze functie dan zou moeten gekoppeld worden aan de functie van de Saveknop in formulier "frmEmpDetails1" bij de code:
Private Sub prSave()
Het zou maar passen mogen starten vanaf rij 2 en dit steeds in kolom E van Sheet "DMS"

Ik zou een werkend voorbeeld moeten kunnen hebben tegen vrijdag omdat ik het dan moet presenteren :(:(
 

Bijlagen

  • test_DMS.xlsm
    954 KB · Weergaven: 33
  • unieke code.xlsm
    15,3 KB · Weergaven: 40
Mocht niemand me voor zijn dan zal ik vanavond kijken of ik je kan helpen.
 
bedankt, ondertussen bijkomende button, VBA-code en sheet aangemaakt die mij toelaat om bepaalde gegevens om te zetten naar een QR-code en deze te printen.
Deze werkten reeds al direct, maar bovenstaand kom ik dan weer niet uit ??
 
Ik zou een werkend voorbeeld moeten kunnen hebben tegen vrijdag omdat ik het dan moet presenteren
Voor de school of voor een promotie???
Ik heb in het andere forum een voorbeeld gepost, met uw vorige vraag inbegrepen om bestanden (jpeg,pdf en doc) te openen via excel.
Uit mijn voorbeeld kan je genoeg info halen om tegen vrijdag een werkend voorbeeld te hebben.
 
Beste gast0660,

ziet er heel leuk uit maar is spijtig nog niet dat wat ik juist aan het zoeken ben voor oplossing.
Ik ga wel even je je bestand bestuderen om ze te begrijpen hoe je het opgebouwd hebt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan