Betrifft: VBA - Listbox in Abhängigkeit füllen
von: Lucas H
Private Sub UserForm_Initialize()
Dim objDic As Object
Dim lngZ As Long
Set objDic = CreateObject("Scripting.Dictionary")
For lngZ = 4 To Sheets("Kundenliste (2)").Cells(Rows.Count, 12).End(xlUp).Row
objDic(Cells(lngZ, 12).Value) = 0
Next
Me.BoxOrt.List = objDic.keys
Dim iLast As Integer, iNext As Integer
Dim iTmp
With BoxOrt
For iLast = 0 To .ListCount - 1
For iNext = iLast + 1 To .ListCount - 1
If .List(iLast) > .List(iNext) Then
iTmp = .List(iLast)
.List(iLast) = .List(iNext)
.List(iNext) = iTmp
End If
Next iNext
Next iLast
End With
End Sub
2. Schritt.
Betrifft: AW: VBA - Listbox in Abhängigkeit füllen
von: 1713762.html
Geschrieben am: 18.09.2019 22:49:08
Moin!
Also am einfachsten wäre wirklich, den Autofilter zu nutzen. Da das wie geschriebe wohl ausscheidet, musst du halt "manuell" die Liste filtern. Also von der ersten bis zur letzten beschriebenen Zeile durchgehen. Schauen, ob in Spalte 12 dein gewünschter Ort steht und wenn ja die Straße zu einem Dictionary hinzufügen. Am Ende die keys wieder an die zweite LIste und diese wie beim ersten Mal sortieren lassen. Also fast identisch wie dein erster Code, außer dass du am Anfang noch eine If then PRüfung reinbaust.
Da du Teile des Codes dann zweimal hast, wäre es ggf. sinnvoll, den sortieren Teil in eine Funktion auszulagern. Von der lässt du dir die sortierte Liste zurückgeben.
VG
Betrifft: AW: VBA - Listbox in Abhängigkeit füllen
von: 1713934.html
Private Sub BoxOrt_Change()
Dim objDic As Object
Dim lngZ As Long
Dim iLast As Integer, iNext As Integer
Dim iTmp
Set objDic = CreateObject("Scripting.Dictionary")
BoxStrasse.Clear
Sheets("Kundenliste (2)").Activate
If Sheets("Kundenliste (2)").Cells(Rows.Count, 12).End(xlUp).Row = BoxOrt.Value Then
For lngZ = 4 To Sheets("Kundenliste (2)").Cells(Rows.Count, 9).End(xlUp).Row
objDic(Cells(lngZ, 9).Value) = 0
Next
Me.BoxStrasse.List = objDic.keys
With BoxStrasse
For iLast = 0 To .ListCount - 1
For iNext = iLast + 1 To .ListCount - 1
If .List(iLast) > .List(iNext) Then
iTmp = .List(iLast)
.List(iLast) = .List(iNext)
.List(iNext) = iTmp
End If
Next iNext
Next iLast
End With
On Error Resume Next
Else
End If
End Sub
Leider funktioniert es so aber nicht. Hast du ggf. einen besseren Vorschlag?
Betrifft: AW: VBA - Listbox in Abhängigkeit füllen
von: 1713946.html
Geschrieben am: 19.09.2019 17:25:24
SO benutzt man Dictionaries:
https://excelmacromastery.com/vba-dictionary/
Betrifft: AW: VBA - Listbox in Abhängigkeit füllen
von: 1713971.html
Sheets("Kundenliste (2)").Activate
For lngZ = 4 To Sheets("Kundenliste (2)").Cells(Rows.Count, 12).End(xlUp).Row
If Sheets("Kundenliste (2)").Cells(lngZ, 12) = BoxOrt.Value Then
objDic(Sheets("Kundenliste (2)").Cells(lngZ, 9).Value) = 0
End If
Next
Me.BoxStrasse.List = objDic.keys