2 comboboxen vullen in formulier met gegevens uit verschillende werkbladen in Excel

Status
Niet open voor verdere reacties.

sjees

Gebruiker
Lid geworden
14 apr 2002
Berichten
112
Hoi Allemaal,

Ik heb al even gezocht, maar ik kan de oplossing niet vinden.

Voor het vullen van twee comboboxen in een formulier heb ik het aantal gebruikte rijen nodig van twee verschillende werkbladen.
Helaas wil het me niet lukken, want ik doe iets verkeerd alleen zie ik de oplossing even niet....

Deze code heb ik, en dit werkt voor de eerste combobox wel, maar voor de 2e niet.

Code:
Private Sub UserForm_Activate()
Dim A As Long, B As Long, C As Long, D As Long

A = Sheets("Blad1").Range("A1", Range("A1000").End(xlUp)).Rows.Count
For B = 1 To A
ComboBox1.AddItem Sheets("Blad1").Cells(B, 1)
Next B

C = Sheets("Blad2").Range("A1", Range("A1000").End(xlUp)).Rows.Count
For D = 1 To C
ComboBox1.AddItem Sheets("Blad2").Cells(D, 1)
Next D


End Sub

Iemand een idee wat ik fout doe en hoe ik dit het beste kan oplossen ?
 
Dit kan moeilijk werken als je 2x Combobox1 gebruikt om te vullen.:o
Zo kan het eventueel ook.
Code:
Private Sub UserForm_Activate()
    With Sheets("Blad1")
        sq = .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
        ComboBox1.List = sq
    End With
    With Sheets("Blad2")
        sq2 = .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
        ComboBox2.List = sq2
    End With
End Sub
 
Laatst bewerkt:
Hoi warme bakkertje,
dank voor je reactie

Dit kan moeilijk werken als je 2x Combobox1 gebruikt om te vullen.
Oeps... ff overheen gelezen in mijn voorbeeld code:o

Dit werkt inderdaad super.. Dank daarvoor.

Maar de rede dat ik met het aantal gebruikte rijen wilde werken is omdat ik met een voorwaarde voor het vullen van de listbox wilde werken.
zo ziet de originale code eruit:
Code:
Private Sub UserForm_Activate()
Dim A As Long
Dim B As Long


'**** namen toevoegen aan combobox 1
With Sheets("Dinsdag")
For A = 1 To .Range("A1", Range("A100").End(xlUp)).Rows.Count
If .Cells(A, 2) = "" Then
CmbNaam1.AddItem .Cells(A, 1)
End If
Next A
End With

'routes toevoegen aan combobox 2

With Sheets("Pud Dinsdag")
For B = 1 To .Range("A1", Range("A100").End(xlUp)).Rows.Count
If .Cells(B, 2) = "" Then
CmbRound.AddItem .Cells(B, 1)
End If
Next B
End With

End Sub

Het is mijn bedoeling dat het item wordt toegevoegd aan de listbox als de cel ernaast leeg is.
Dit werkt prima voor de eerste combobox, maar geeft een error voor de 2e combobox.

als ik de regel
Code:
For B = 1 To .Range("A1", Range("A100").End(xlUp)).Rows.Count
verander in
Code:
For B= 1 to 100
werkt het wel maar dan krijg ik een heleboel lege waardes in mijn listbox (het aantal wisselt namelijk maar is nooit meer dan 100)

Misschien weet iemand hoe ik dit het beste kan doen.
 
of nog iets aardiger:

Code:
Private Sub UserForm_Activate()
    ComboBox1.List= Sheets("Blad1").Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row).value
    ComboBox2.List = combobox1.list
end sub
 
Test deze eens
Code:
Private Sub UserForm_Activate()
CmbNaam1.Clear
CmbRound.Clear
Set ws = Sheets("Dinsdag")
Set ws2 = Sheets("Pud Dinsdag")
Set testlist = CreateObject("Scripting.Dictionary")
'namen toevoegen aan combobox 1
With testlist
    For Each rCell In ws.Range("A1", ws.Cells(Rows.Count, "A").End(xlUp))
        If rCell.Offset(, 1) = "" And Not .exists(rCell.Value) Then
            .Add rCell.Value, Nothing
        End If
    Next rCell
    CmbNaam1.List = .keys
    testlist.RemoveAll
'routes toevoegen aan combobox 2
    For Each rCell In ws2.Range("A1", ws2.Cells(Rows.Count, "A").End(xlUp))
        If rCell.Offset(, 1) = "" And Not .exists(rCell.Value) Then
            .Add rCell.Value, Nothing
        End If
    Next rCell
    CmbRound.List = .keys
End With
End Sub
 
Laatst bewerkt:
of
Code:
Private Sub UserForm_Activate()
  for each cl in Sheets("Dinsdag").Range("B1:B100").specialcells(4)
    c01 =c01 & "|" & cl.offset(,-1).value
  next
  CmbNaam1.List=split(mid(c01,2),"|")

  for each cl in Sheets("Pud Dinsdag").Range("B1:B100").specialcells(4)
    c01 =c01 & "|" & cl.offset(,-1).value
  next
  CmbRound.List=split(mid(c01,2),"|")
End Sub
 
Laatst bewerkt:
Hoi Warme bakkertje en snb.

Helemaal super, werkt allebij helemaal super.

Dankzij jullie kan ik weer verder met het bouwen :)

bedankt voor het delen van jullie wijsheid:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan