Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1336to1340
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Filtdern mehrspaltige Listbox

Filtdern mehrspaltige Listbox
10.11.2013 19:25:43
Werner
Hallo Gemeinde,
ich filtere doppelte Einträge einer 3-spaltigen Listbox heraus.
Private Sub UserForm_Activate()
'Daten aus Tabelle in Listbox einlesen
Dim advisor As String
Dim I As Long
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
Personalien.Clear
For I = 5 To Range("D1000").End(xlUp).Row
With Worksheets("Jahrestabelle")
If .Cells(I, 17).Value = "M" Then
If Not Dic.Exists(.Cells(I, 4).Value) And _
Trim(CStr(.Cells(I, 4).Value))  "" Then
Dic.Add .Cells(I, 4).Value, .Cells(I, 4).Value
Dic.Add .Cells(I, 5).Value, .Cells(I, 5).Value
Dic.Add .Cells(I, 6).Value, .Cells(I, 6).Value
End If
End If
End With
Next I
End Sub

Das funktioniert auch. Allerdings gibt er mir das gefilterte Ergebnis untereinander, sprich
Nachname
Vorname
Geburtsdatum
in der Listbox aus und nicht nebeneinander in drei Spalten.
Wie muss ich den Code ändern damit er mit das Filterergebnis in nebeneinander in drei Spalten der Listbox ausgibt.
Danke Werner

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Lade ein Beispiel hoch...
11.11.2013 13:25:07
Tino
Hallo,
aus deinem Code ist nicht ersichtlich wo Daten in die Listbox übergeben werden.
Lade besser ein Beispiel hoch, dann sollte dieses Problem schnell behoben sein.
Gruß Tino

AW: Lade ein Beispiel hoch...
11.11.2013 22:27:41
Werner
Hallo Tino,
danke erstmal, dass du geantwortet hast. Beispiel hochladen geht leider nicht. Aber ich habe beim code reistellen was vergessen. Also hier noch mal. Vielleicht kannst du mir ja jetzt weiterhelfen.
Private Sub UserForm_Activate()
'Daten aus Tabelle in Listbox einlesen
Dim I As Long
Dim Dic As Object
Application.ScreenUpdating = False
Worksheets("Jahrestabelle").Activate
Set Dic = CreateObject("Scripting.Dictionary")
Personalien.Clear
For I = 5 To Range("D1000").End(xlUp).Row
With Worksheets("Jahrestabelle")
If .Cells(I, 17).Value = "M" Then
If Not Dic.Exists(.Cells(I, 4).Value) And _
Trim(CStr(.Cells(I, 4).Value))  "" Then
Dic.Add .Cells(I, 4).Value, .Cells(I, 4).Value
Dic.Add .Cells(I, 5).Value, .Cells(I, 5).Value
Dic.Add .Cells(I, 6).Value, .Cells(I, 6).Value
End If
End If
End With
Next I
Personalien.List = Dic.Keys
End Sub
Danke, Werner

Anzeige
Daten zuvor in einem Array sammeln
12.11.2013 12:22:39
Tino
Hallo,
versuch es mal so und sammele die Daten in einem Array.
Private Sub UserForm_Activate()
'Daten aus Tabelle in Listbox einlesen
Dim I As Long, n&
Dim Dic As Object, ArValues()
Application.ScreenUpdating = False
'Listbox leer machen
Personalien.Clear
'Dictionary initialisieren
Set Dic = CreateObject("Scripting.Dictionary")
With Worksheets("Jahrestabelle")
.Activate '? wird hier nicht benötigt
I = .Range("D1000").End(xlUp).Row
If I > 4 Then
'Array groß genug Dimensionieren
ReDim Preserve ArValues(1 To 3, 1 To I - 4)
For I = 5 To I
If .Cells(I, 17).Value = "M" Then
If Not Dic.Exists(.Cells(I, 4).Value) Then
If Trim(CStr(.Cells(I, 4).Value))  "" Then
Dic(.Cells(I, 4).Value) = 0
n = n + 1 'Hilfszähler um Array zu füllen
ArValues(1, n) = .Cells(I, 4).Value
ArValues(2, n) = .Cells(I, 5).Value
ArValues(3, n) = .Cells(I, 6).Value
End If
End If
End If
Next I
'nicht benötigte Spalten entfernen
ReDim Preserve ArValues(1 To 3, 1 To n)
'Array drehen und in Listbox schreiben
Personalien.List = Application.Transpose(ArValues)
End If
End With
Application.ScreenUpdating = False
End Sub
Gruß Tino

Anzeige
AW: Daten zuvor in einem Array sammeln
13.11.2013 09:14:35
Werner
Hallo Tino,
danke für deien Hilfe, genau so wollte ich es haben. Funktioniert wunderbar. Danke.
Gruß Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige