Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1532to1536
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

Listbox mehrspaltig

Listbox mehrspaltig
06.01.2017 09:28:53
Sebastian
Hallo liebes Forum,
ich muss eine Listbox zweispaltig und ohne Duplikate aus Tabellenblatt1 befüllen. Ich habe das Forum natürlich bereits durchsucht, aber meinen Spezialfall nicht gefunden:
Die Duplikate ergeben sich aus Spalte2 der Tabelle. Die Duplikate sollen nicht aus der Tabelle gelöscht werden. Trotzdem sollen die Spalten 1 und 2 in der Listbox stehen. In der Tabelle stehen immer unterschiedliche Dinge und auch die Zeilenzahl ist immer unterschiedlich.
Beispielsweise steht in Tabelle1:
1 Meier
1 Meier
1 Meier
1 Müller
1 Müller
2 Neumann
2 Neumann
2 Neumann
2 Schmidt
2 Schmidt
In der Listbox soll stehen:
1 Meier
1 Müller
2 Neumann
2 Schmidt
Kann mir jemand helfen? Danke sehr im voraus!

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox mehrspaltig
06.01.2017 09:51:43
Sebastian
Hallo Hajo,
danke für Deine Antwort. Leider komme ich damit nicht weiter. Denn in der Listbox werden zwar Duplikate anhand einer Spalte entfernt, aber die zugehörige zweite Spalte wird nicht angezeigt - auch dann nicht, wenn ich die Listbox 2-Spaltig anlege.
Kannst Du da bitte nochmal nachschauen?
Danke und Grüße
Sebastian
AW: Listbox mehrspaltig
06.01.2017 09:57:38
Hajo_Zi
dazu kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.
Man könnte vermuten es fehlt
ListBox1.List(ListBox1.ListCount, 1) = Cells(loi,2)
ListBox1.List(ListBox1.ListCount, 2) = Cells(loi,3)
Gruß Hajo
Anzeige
AW: Listbox mehrspaltig
06.01.2017 10:08:34
Sebastian
tut mir leid, aber ich bin noch nicht so weit mit VBA. Ich habe nur Deine Datei geöffnet und dort wird in der Listbox nur eine Spalte ausgegeben. Ist das nicht auf Deinem Rechner auch so?
Gruß Sebastian
AW: Listbox mehrspaltig
06.01.2017 10:11:04
Hajo_Zi
Gut also meine Ergänzung hat Dir nicht gefallen.
Da habe ich dann keinen weiteren Vorschlag.
Ich bin dann raus siehe mein vorletzten Beitrag.
Gruß Hajo
AW: Listbox mehrspaltig
06.01.2017 10:41:58
Sebastian
Hallo Hajo,
ich verstehe Deinen Tonfall nicht. Ich habe mich hier als VBA-Anfänger nur hilfesuchend an das Forum gewendet. Du hast netterweise versucht mir zu helfen, aber Deine Lösung hat mein Problem nicht gelöst. Deine Ergänzung habe ich leider nicht verstanden - weder, warum Du auf einen fremden Rechner schauen musst, wenn Du die Datei selbst geschrieben hast, noch die Ergänzung (da ich wie gesagt Anfänger bin).
Anzeige
AW: Listbox mehrspaltig
06.01.2017 10:36:33
Werner
Hallo Sebastian,
wenn deine Namensliste nach Spalte B alphabetisch sortiert ist, dann kannst du die Listbox auch mit einer Schleife befüllen.
https://www.herber.de/bbs/user/110362.xlsm
Gruß Werner
AW: Listbox mehrspaltig
06.01.2017 11:07:50
Werner
Hallo Sebastian,
hier nochmal das Makro. Jetzt werden vor Befüllen der Listbox im Blatt 1 die Spalten A und B nach B alpabetisch aufsteigend sortiert. Du brauchst dich dann also nicht mehr darum zu kümmern, dass vor Befüllen der Listbox die Namen sortiert werden (falls neue dazukommen können die einfach am Ende der Namensliste dazugefügt werden).
Private Sub UserForm_Initialize()
Dim wks As Worksheet
Dim loLetzte As Long
Dim i As Long
'## festlegen des Worksheets auf dem die Liste ist ##
Set wks = ThisWorkbook.Worksheets("Tabelle1")
'## letzte belegte Zeile in Spalte B ermitteln ######
loLetzte = wks.Cells(Rows.Count, 1).End(xlUp).Row
'## Bildschirmaktualisierung aus
Application.ScreenUpdating = False
'## Spalten A und B nach Spalte B alphabetisch sortieren
Columns("B:B").Select
wks.Sort.SortFields.Clear
wks.Sort.SortFields.Add Key:=Range("B1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With wks.Sort
.SetRange Range("A1:B" & loLetzte)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'## Schleife von Zeile 1 bis letzter belegter Zeile #
For i = 1 To loLetzte
'## Prüfung ob aktuelle Zelle ungleich Nachfolgezelle
If wks.Cells(i, 2)  wks.Cells(i + 1, 2) Then
With Me.ListBox1
'## wenn ja Wert aus Spalte A in erste Spalte Listbox eintragen
.AddItem wks.Cells(i, 1)
'## Wert aus Spalte B in zweite Spalte Listbox eintragen
.List(.ListCount - 1, 1) = wks.Cells(i, 2)
End With
End If
Next i
'## Bildschirmaktualisierung ein
Application.ScreenUpdating = True
End Sub
Gruß Werner
Anzeige
AW: Listbox mehrspaltig
06.01.2017 11:52:13
Sebastian
Hallo Werner,
schon einmal ganz vielen Dank! Ich nehme mir heute noch Zeit, das ganze ausgiebig zu testen.
Viele Grüße
Sebastian
AW: Listbox mehrspaltig
08.01.2017 08:37:55
Werner
Hallo Sebastian,
ich noch mal. Habe bemerkt, dass ich im Code einen Fehler drin hatte. Und zwar würde der Code Probleme machen, wenn deine Datenliste für die Listbox z.B. im Blatt 1 ist und die Userform in einem anderen Blatt aufgerufen wirde. Hier der Code mit Änderung, dass dieses Problem nicht auftaucht.
Private Sub UserForm_Initialize()
Dim wks As Worksheet
Dim loLetzte As Long
Dim i As Long
'## festlegen des Worksheets auf dem die Liste ist ##
Set wks = ThisWorkbook.Worksheets("Tabelle1")
'## letzte belegte Zeile in Spalte B ermitteln ######
loLetzte = wks.Cells(Rows.Count, 1).End(xlUp).Row
'## Bildschirmaktualisierung aus
Application.ScreenUpdating = False
'## Spalten A und B nach Spalte B alphabetisch sortieren
With wks.Columns("B:B")
wks.Sort.SortFields.Clear
wks.Sort.SortFields.Add Key:=Range("B1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End With
With wks.Sort
.SetRange Range("A1:B" & loLetzte)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'## Schleife von Zeile 1 bis letzter belegter Zeile #
For i = 1 To loLetzte
'## Prüfung ob aktuelle Zelle ungleich Nachfolgezelle
If wks.Cells(i, 2)  wks.Cells(i + 1, 2) Then
With Me.ListBox1
'## wenn ja Wert aus Spalte A in erste Spalte Listbox eintragen
.AddItem wks.Cells(i, 1)
'## Wert aus Spalte B in zweite Spalte Listbox eintragen
.List(.ListCount - 1, 1) = wks.Cells(i, 2)
End With
End If
Next i
'## Bildschirmaktualisierung ein
Application.ScreenUpdating = True
End Sub
Gruß Werner
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige