• 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.

Excel vba: Combobox vullen zonder lege cellen uit range

Status
Niet open voor verdere reacties.

Battin

Gebruiker
Lid geworden
9 nov 2016
Berichten
32
Hallo allemaal,

Ik gebruik onderstaande code om een combobox te vullen. Echter loop ik nu tegen een probleem aan.

Code:
Private Sub cboAccoType_AfterUpdate()
                If cboAccoType.value = Worksheets("SETUP").Range("B33").value Then
                    boekingen.cboAccommodatie.List = Worksheets("SETUP").Range("S3:T100").value
                ElseIf cboAccoType.value = Worksheets("SETUP").Range("B34") Then
                    boekingen.cboAccommodatie.List = Worksheets("SETUP").Range("U3:V100").value
                ElseIf cboAccoType.value = Worksheets("SETUP").Range("B35") Then
                    boekingen.cboAccommodatie.List = Worksheets("SETUP").Range("W3:X100").value
                ElseIf cboAccoType.value = Worksheets("SETUP").Range("B36") Then
                    boekingen.cboAccommodatie.List = Worksheets("SETUP").Range("Y3:Z100").value
                ElseIf cboAccoType.value = Worksheets("SETUP").Range("B37") Then
                    boekingen.cboAccommodatie.List = Worksheets("SETUP").Range("AA3:AB100").value
                ElseIf cboAccoType.value = Worksheets("SETUP").Range("B38") Then
                    boekingen.cboAccommodatie.List = Worksheets("SETUP").Range("AC3:AD100").value
                ElseIf cboAccoType.value = Worksheets("SETUP").Range("B39") Then
                    boekingen.cboAccommodatie.List = Worksheets("SETUP").Range("AE3:AF100").value
                ElseIf cboAccoType.value = Worksheets("SETUP").Range("B40") Then
                    boekingen.cboAccommodatie.List = Worksheets("SETUP").Range("AG3:AH100").value
                End If
End Sub


Ik heb 2 comboboxen in mijn Userform.
Combobox 1 = cboAccoType
Combobox 2 = cboAccommodatie

Als combobox 1 gelijk is als cell B33, dan wordt in combobox 2 een lijst weergegeven van S3:T100.
Maar als deze lijst lege cellen bevat, blijft de lijst natuurlijk tot 100 doorlopen.

Is het mogelijk om in bovenstaande code een kleine aanpassing te doen, waardoor LEGE cellen niet zichtbaar zijn in de lijst?
Deze lijsten zijn dynamisch, vandaar dat lege cellen of cellen waar een formule 0 teruggeeft, niet zichtbaar hoeven zijn :D


Alvast bedankt.


EDIT: Voorbeeldbestandje toegevoegd
 

Bijlagen

  • test.xlsm
    20,3 KB · Weergaven: 34
Laatst bewerkt:
Die routine kan sowieso wel wat voordeliger geprogrammeerd worden.
Als je een voorbeeldbestand plaatst met de comboboxen erin word je beter geholpen.
 
Ik heb een voorbeeldbestandje toegevoegd aan #1
@ edmoor: ik weet niet zo goed hoe ik dit kan toepassen?!
 
Laatst bewerkt:
Mijn berichtje van vanmiddag heb ik blijkbaar niet verzonden.

Zonder gebruik van Rowsource
Code:
Dim ar
Private Sub UserForm_Initialize()
  With Sheets("Blad1")
    cboAccoType.List = .Columns(1).SpecialCells(2).Value
    ar = .Cells(1, 3).CurrentRegion
  End With
End Sub
Private Sub cboAccoType_Change()
  If cboAccoType.ListIndex > -1 Then
    For j = 2 To UBound(ar)
      If ar(j, 1 + 2 * cboAccoType.ListIndex) <> "" Then c00 = c00 & "|" & ar(j, 1 + 2 * cboAccoType.ListIndex)
    Next j
  End If
  If Len(c00) > 0 Then cboAccommodatie.List = Split(Mid(c00, 2), "|")
End Sub
 

Bijlagen

  • test (11).xlsm
    20,3 KB · Weergaven: 60
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan