zwei Kombo-Steuerlemente mit Vorselektion durch das erste Kombo-Steuerelement

23/04/2010 - 10:18 von hotzi | Report spam
Hallo Zusammen,

Unten folg Code list in ein Kombo-Steuerelement, Daten aus der Tabelle
„Moebel“ spalte 2 ein.

ich möchte nun diesem Kombinationsfeld ein weiterer voranstellen, dass
die Auswahl der Möbel z.b. auf den Typen beschrànkt werden kann die in
der gleichen Tabelle in Spalte 3 sind. Das Kombinationsfeld wird als
die Typen wie z.B. Schrank, Herd etc. einlesen und die mögliche
Auswahl in cboZielBio sollte sich darauf beschrànken. D.h. wenn
Schrànek voreinsgestellt sind kann man nur verschiedene Schranktypen
aber keine Stühle auswàhlen.

Kann mir da jemand weiterhelfen.

Danke!!

Sub cboZielBioEinlesen()
Dim frm As UserForm
'Dim i As Integer
Dim iMax As Integer

Set frm = dlgZB
BildAus
With frm.cboZielBio
.Clear
iMax = Worksheets("xTab_Zielbiotop").UsedRange.Rows.Count
.MatchEntry = fmMatchEntryComplete 'fmMatchEntryFirstLetter
For i = 3 To iMax
.AddItem Worksheets("Moebel").Cells(i, 2)
Next i

End With
BildAn
End Sub
 

Lesen sie die antworten

#1 Peter Schleif
24/04/2010 - 06:33 | Warnen spam
hotzi schrieb am 23.Apr.2010 10:18 Uhr:

ich möchte nun diesem Kombinationsfeld ein weiterer voranstellen, dass
die Auswahl der Möbel z.b. auf den Typen beschrànkt werden kann die in
der gleichen Tabelle in Spalte 3 sind.



Das vorangestellte Kombinationsfeld heißt z.B. "cboTyp". Es wird beim
Initialisieren der UserForm mit Werten aus Spalte 3 befüllt. Jeder Wert
nur 1x, keine leeren Zellen. Die zweite ComboBox "cboZielBio" wird bei
jeder Änderung von cboTyp mit jenen Werten aus Spalte 2 neu befüllt, die
in Spalte 3 mit dem aktuellen Wert von cboTyp übereinstimmen.

Ich habe deinen Code möglichst unveràndert gelassen. In deiner
For-Schleife zum Befüllen von cboZielBio ist nur eine If-Abfrage hinzu
gekommen.

Peter


Private Sub UserForm_Initialize()
Call cboTypEinlesen
End Sub

Private Sub cboTyp_Change()
Call cboZielBioEinlesen
End Sub


Sub cboTypEinlesen()
Dim i As Integer

With CreateObject("Scripting.Dictionary")
For i = 3 To Sheets("xTab_Zielbiotop").UsedRange.Rows.Count
If Not .Exists(Sheets("Moebel").Cells(i, 3).Value) _
And Sheets("Moebel").Cells(i, 3).Value <> "" Then
.Add Sheets("Moebel").Cells(i, 3).Value, "foo"
End If
Next
dlgZB.cboTyp.List() = .Keys
End With

If dlgZB.cboTyp.ListCount > 0 Then dlgZB.cboTyp.ListIndex = 0
End Sub


Sub cboZielBioEinlesen()
Dim frm As UserForm
Dim i As Integer
Dim iMax As Integer

Set frm = dlgZB
BildAus
With frm.cboZielBio
.Clear
iMax = Worksheets("xTab_Zielbiotop").UsedRange.Rows.Count
.MatchEntry = fmMatchEntryComplete 'fmMatchEntryFirstLetter
For i = 3 To iMax
If Worksheets("Moebel").Cells(i, 3) = dlgZB.cboTyp And _
Worksheets("Moebel").Cells(i, 2) <> "" Then
.AddItem Worksheets("Moebel").Cells(i, 2)
End If
Next i
If .ListCount > 0 Then .ListIndex = 0
End With
BildAn
End Sub

Ähnliche fragen