2 keuzelijsten combobox met relatie

Status
Niet open voor verdere reacties.

erics2003

Gebruiker
Lid geworden
9 jul 2007
Berichten
25
Hallo,

ik heb 2 comboboxen.

De eerste combobox geeft de eerste waarde weer van elke kolom: dit lukt
De tweede waardes moeten voor de gekozen kolom rij 2 tot rij...weergeven.

Weet iemand hoe ik dat tweede voor elkaar krijg.

ik heb even een voorbeeldbestand toegevoegd.

Bij voorbaat dank!
 

Bijlagen

Beste erics hieronder de code die de combobox2 vult.

Als Combobox1 verranderd dan gaat hij de waarde van Combobox1 vergelijken met de excelsheet. Als de waarde voorkomt in een kolom op rij 1 dan gaat hij Combobox2 vullen met de gegevens van die kolom.

Code:
Private Sub ComboBox1_Change()
Dim strWaarde As String

strWaarde = ComboBox1.Value
ComboBox2.Clear
For i = 1 To Sheet1.UsedRange.Columns.Count
    If Cells(1, i).Text = strWaarde Then
        For j = 2 To Sheet1.UsedRange.Rows.Count
            ComboBox2.AddItem (Cells(j, i).Text)
        Next j
    End If
Next i

End Sub

Mvg. René
 

Bijlagen

Laatst bewerkt:
bedankt (en nog een vraag)

He bedankt!

het werkt goed.

ik had nog 1 vraag. zou ik in de 2de kolom ook een gesorteerde lijst (van laag naar hoog) kunnen krijgen in de combobox. Als de cijfers door elkaar staan in de kolom heb ik dat eigenlijk nodig.
 
Beste Erics,

Hierbij een gesorteerde lijst terug, enige nadeel aan deze versie is dat de range van de nummers onder de desbetreffende naam ook gelijk gesorteerd staan in het werkblad zelf.

Code:
Private Sub ComboBox1_Change()
Dim strWaarde As String

strWaarde = ComboBox1.Value
ComboBox2.Clear
For i = 1 To Sheet1.UsedRange.Columns.Count
    If Cells(1, i).Text = strWaarde Then
        Range(Cells(2, i), Cells(Sheet1.UsedRange.Rows.Count, i)).Sort Key1:=Cells(2, i), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
        
        ComboBox2.List = Range(Cells(2, i), Cells(Sheet1.UsedRange.Rows.Count, i)).Value
    End If
Next i

End Sub

Mvg. René
 
bedankt!

maar dat wil ik nu juist niet. ik wil het alleen gesorteerd in mijn combobox en gewoon ongesorteerd laten in het werkblad.

weet iemand of dit kan?
 
Beste Erics,

Via onderstaande link moet je verder komen. De range wordt omgezet naar een array en deze array wordt weer gesorteerd. Als je dat hebt gedaan moet je de gesorteerde array in je combobox zetten.
Code:
Combobox.list = Array
http://www.ozgrid.com/VBA/sort-array.htm

Mvg. René
 
Dit kan simpeler en sneller:
ipv.
Code:
Private Sub ComboBox1_Change()
Dim strWaarde As String
strWaarde = ComboBox1.Value
ComboBox2.Clear
For i = 1 To Sheet1.UsedRange.Columns.Count
    If Cells(1, i).Text = strWaarde Then
        For j = 2 To Sheet1.UsedRange.Rows.Count
            ComboBox2.AddItem (Cells(j, i).Text)
        Next j
    End If
Next i

End Sub

kan het met:
Code:
Private Sub ComboBox1_Change()
  on error resume next
  with sheet1  
    combobox2.list=.columns(.rows(1).find(combobox1.value).column).specialcells(xlcelltypeconstants).offset(1)
  end with
End Sub
 
Ja er zijn altijd meerdere wegen naar Rome snb, mijn robuustere versie vindt ik wat beter te volgen voor de "onervaardere" vba-ers onder ons.
Het gaat ook tenslotte om een oplossing die de gebruikers desgewenst altijd kunnen bijschrapen.

Mvg. René
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan