• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Code in module geeft fout

Havee

Gebruiker
Lid geworden
22 dec 2025
Berichten
6
Hoi,
Deze code in een module, doet niks behalve een fout geven.
Ik heb het eerste stukje uit de module gehaald en op het werkblad gezet, maar dan gebeurt er helemaal niks.
Als het wel in de module zit geeft het een compileer fout..
Ikke nie snap nie
 

Bijlagen

Welkom op helpmij. Je bent niet erg duidelijk met je vraag. Maar probeer het eens zo:
Code:
Sub Maak_Factuur()
    With Sheets("Factuur")
        .Range("A8") = Sheets("Maand").Range("J2")
        .Range("E8") = Sheets("Maand").Range("B2")
        .Range("E9") = Sheets("Maand").Range("A2")
        .Range("E19") = Sheets("Maand").Range("C2")
    End With
End Sub
En in je Sub Niks() staan verwijzingen naar de niet bestaande werkbladen Sheet1 en Sheet2.
 
Vreemd, maar zo werkt het wel.
Wellicht dat iemand anders kan uitleggen waarom dat zo is.
Code:
Sub Maand_ComboBox1()
    Dim r As Long
    Dim wsMaand As Worksheet
    Set wsMaand = Sheets("Maand")
  
    Sheets("Maand").ComboBox1.Clear
    ' Loop door kolom B om de datums toe te voegen
    For r = 2 To wsMaand.Cells(wsMaand.Rows.Count, 2).End(xlUp).Row - 2
        If wsMaand.Cells(r, 2).Value <> "" Then
            Sheets("Maand").ComboBox1.AddItem wsMaand.Cells(r, 2).Value
        End If
    Next r
End Sub
PS:
De - 2 toegevoegd omdat je anders ongewenste gegevens in je combobox krijgt.
 
Laatst bewerkt:
Code:
Sub Maand_ComboBox1()
    Dim r As Long
    With Sheets("Maand")
        .ComboBox1.Clear
        ' Loop door kolom B om de datums toe te voegen
        For r = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
            If .Cells(r, 2).Value <> "" Then
                .ComboBox1.AddItem .Cells(r, 2).Value
            End If
        Next r
    End With
End Sub
@edmoor was mij voor, maar ik snap ook niet waarom wsMaand een foutmelding geeft.
 
@AHulpje
Heb jij een verklaring waarom het met het worksheet object wsMaand niet werkt?
 
@edmoor
Daar heb ik ook geen verklaring voor, en het rare is dat dit ook werkt:
Code:
Sub Maand_ComboBox1()
    Dim r As Long
    Set wsMaand = Sheets("Maand")
    With wsMaand
        .ComboBox1.Clear
        ' Loop door kolom B om de datums toe te voegen
        For r = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
            If .Cells(r, 2).Value <> "" Then
                .ComboBox1.AddItem .Cells(r, 2).Value
            End If
        Next r
    End With
End Sub
En dit dan weer niet:
Code:
Sub Maand_ComboBox1()
    Dim r As Long
    Dim wsmaand As Worksheet
    Set wsmaand = Sheets("Maand")
    With wsmaand
        .ComboBox1.Clear
        ' Loop door kolom B om de datums toe te voegen
        For r = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
            If .Cells(r, 2).Value <> "" Then
                .ComboBox1.AddItem .Cells(r, 2).Value
            End If
        Next r
    End With
End Sub
 
Is er ook nog een optie in te voegen zodat de combobox geupdatet wordt zodra er ergens iets veranderd? Nu moet ik, als er een factuurnummer bij komt, eerst een ander tabblad openen en weer terug voordat de combobox alle waardes laat zien.
Wel veel dank voor jullie snelle hulp!! Wordt zeer gewaardeerd!
 
Voeg deze toe achter het werkblad Maand:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 Then Maand_ComboBox1
End Sub
 
Maak gebruik van List; hoef je het ook niet te legen met .Clear.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Column = 2 Then
    Range("b2", Cells(Rows.Count, 2).End(xlUp)).Name = "b"
    ComboBox1.List = Split(Join(Filter([transpose(if(b="","~",b))], "~", 0), "|"), "|")
 End If
End Sub
 
reduceer werkbladinteraktie als je met VBA werkt:
Code:
Private Sub Worksheet_Activate()
    ComboBox1.List = Cells(1).Resize(Cells(Rows.Count, 1).End(xlUp).Row).Value
    For j = ComboBox1.ListCount - 1 To 0 Step -1
       If Not IsDate(ComboBox1.List(j, 0)) Then ComboBox1.RemoveItem j
    Next
End Sub
 
@edmoor
Heb het even voorgelegd aan ChatGPT. Samenvatting van het antwoord:
  • ❌ wsMaand.ComboBox1 → invalid in standard modules
  • ✅ Me.ComboBox1 → only works in the sheet’s code module
  • ✅ ws.OLEObjects("ComboBox1").Object → works everywhere
 
Dank je.
De oorzaak zal wel zijn dat het gaat om een OLE object in plaats van een direct werkblad object.
 
Terug
Bovenaan Onderaan