komme mit meinem Problem nicht weiter.
Ausgangslage: Ich habe ein Tabellenblatt "Jahrestabelle". Dort sind Personaldaten hinterlgt. In Spalte D5:D100 der Familienname, in Spalte E5:E100 der Vorname und in Spalte F5:F100 das Geburtsdatum.
Jetzt möchte ich diese Daten in eine mehrspaltige Listbox (3 Spalten) einlesen, ohne dass doppelte Werte angezeigt werden.
Das mache ich derzeit mit folgendem Code (von Rudi) über Scripting Dictionary.
Dim i As Long, n As Long
Dim Dic As Object, ArrValues, arrList()
Application.ScreenUpdating = False
'Listbox leer machen
Personalien.Clear
'Dictionary initialisieren
Set Dic = CreateObject("Scripting.Dictionary")
With Worksheets("Jahrestabelle")
i = .Range("D1000").End(xlUp).Row
If i > 4 Then
For i = 5 To i
Dic(.Cells(i, 4).Value) = Array(.Cells(i, 4).Value, .Cells(i, 5).Value, .Cells(i, 6).Value)
Next i
End If
End With
If Dic.Count Then
ArrValues = Dic.items
ReDim arrList(1 To Dic.Count, 1 To 3)
For i = 1 To Dic.Count
For n = 1 To 3
arrList(i, n) = ArrValues(i - 1)(n - 1)
Next
Next
Das funktioniert auch. Allerdings prüft er hier nur die Familiennamen und liest mir keine Dopplungen ein. Ich bräuchte aber eine Routine bei der geprüft wird ob Famillienname (Zelle D5), Vorname (Zelle E5) und Geburtsdatum (Zelle F5) identisch ist. Nur wenn alle drei Zellinhalte übereinstimmen also mehrfach vorkommen soll er die Daten nicht in die Listbox einlesen.
Danke Werner