Combobox vullen met maar 1 regel in werkblad

Status
Niet open voor verdere reacties.

ericje85

Gebruiker
Lid geworden
11 aug 2008
Berichten
31
Hoi,
Wie kan mij helpen met het volgende? Via onderstaande code lukt het een combobox via een dynamische range te vullen en te sorteren. Dat doet hij prima, zolang er meer dan 1 regel in het werkblad is ingevuld. Stel dat er in het werkblad slechts 1 regel is ingevuld (en de rest leeg) dan geeft hij een foutmelding (typen komen niet met elkaar overeen). Ik heb op hoop van goede zegen wat aanpassingen proberen te doen in de code (zoals bij For i = 0, en dan het If Not-statement ook aanpassen naar 0), maar dat werkt niet.
Ook de range veranderen naar C3:C werkt niet.
Wie kan mij uit de brand helpen?

Hartelijk dank,
Eric

Code:
Private Sub UserForm_Initialize()
    With Sheets("Blad 1")
        sn = .Range("c4:c" & .Cells(Rows.Count, 3).End(xlUp).Row).Value
        With CreateObject("System.Collections.ArrayList")
            For i = 1 To UBound(sn)
                If Not .contains(sn(i, 1)) Then .Add (sn(i, 1))
            Next
            .Sort
            UserNrComboBoxBEH.List = .toarray
        End With
    End With

End Sub
 
Code:
Private Sub UserForm_Initialize()
    With Sheets("Blad 1")
        sn = .Range("c4:c" & .Cells(Rows.Count, 3).End(xlUp).Row).Value
        if ubound(sn)=1 then
           UserNrComboBoxBEH.List=.cells(4,3).resize(,2).value
        else
          With CreateObject("System.Collections.ArrayList")
            For i = 1 To UBound(sn)
                If Not .contains(sn(i, 1)) Then .Add (sn(i, 1))
            Next
            .Sort
            UserNrComboBoxBEH.List = .toarray
         End With
      End if
    End With
End Sub
 
Laatst bewerkt:
Thnx snb, het ziet er inderdaad logisch uit wat je doet. Echter, hij blijft dezelfde foutmelding geven helaas.
 
Niet na mijn laatste aanvulling van de code.
 
Helaas, snb. Ik zou willen dat je gelijk had, maar het werkt nog altijd ziet. Volgens mij zie ik wel wat je gedaan hebt: .value achter het commando voor waarde van 1 cel vullen. Ik heb ook al gekeken of het uitmaakt als ik het stukje '.Resize(,2)' weghaal met/zonder .Value erachter, maar dat pakt ie ook niet. Zou er mogelijk iets moeten gebeuren met de sn = range aanpassen? Of het For/Next-statement wijzigen, omdat begint bij 1 waarde en daarna bekijkt of er meer items moeten worden toegevoegd? Zomaar een gok?
Ik had al geprobeerd om For i = 2 To UBound(sn) te doen, maar ook dat werkt niet. Vast onlogisch wat ik doe, maar aangezien het bij mij 'klok horen luiden en niet weten waar de klepel hangt'-verhaal is, ga je hier en daar op goed geluk maar aanpassingen doen.
 
Code:
Private Sub UserForm_Initialize()
    With Sheets("Planlijst Behandeling")
        If Application.CountA(.Range("c4:c" & .Cells(Rows.Count, 3).End(xlUp).Row)) = 1 Then
            UserNrComboBoxBEH.AddItem .Cells(4, 3).Value
        Else
            sn = .Range("c4:c" & .Cells(Rows.Count, 3).End(xlUp).Row).Value
            With CreateObject("System.Collections.ArrayList")
                For i = 1 To UBound(sn)
                    If Not .contains(sn(i, 1)) Then .Add (sn(i, 1))
                Next
                .Sort
                UserNrComboBoxBEH.List = .toarray
            End With
        End If
    End With
End Sub
 
Hoi Warme Bakkertje, thnx! Dat werkt goed! Thnx! En weer wat geleerd.
Groet Eric
 
Dit vind ik beter:

Code:
Private Sub UserForm_Initialize()
  sn = Sheet1.Cells(4, 3).Resize(Sheet1.Cells(Rows.Count, 3).End(xlUp).Row - 3, 2).Value
        
  With CreateObject("System.Collections.ArrayList")
    For j = 1 To UBound(sn)
      If Not .contains(sn(j, 1)) Then .Add sn(j, 1)
    Next
    .Sort
    Combobox1.List = .toarray
  End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan