Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1640to1644
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

Einträge aus mehrspaltigen Listbox übernehmen

Einträge aus mehrspaltigen Listbox übernehmen
01.09.2018 18:11:40
Pape
Hallo,
ich habe es - auch dank Recherche in diesem Forums... - geschafft eine UF zu erstellen, in der ich einen großen Datensatz in ein mehrspaltiges Listenfeld lade.
Ich habe nun aber zwei Probleme:
Ich möchte gerne Einträge aus diesem Listenfeld (bspw. durch Doppelklick) in ein Zweites übernehmen. Ein Beispiel dazu habe ich hier im Forum gefunden, allerdings will es bei mir nicht klappen - bei mir wird immer nur die erste Spalte übernommen?
Das zweite Problem, mit dem ich nicht weiterkomme ist die Verknüpfung der Listbox mit einer Combobox: ich würde gerne die Einträge im ersten Listenfeld über eine Kombobox filtern. Die Verknüfung der Combobox mit der Ursprungstabelle zwecks Einlesen der "Filterwerte" habe ich geschafft, die mit der Listbox aber nicht.
Bin für jede Hilfe dankbar - anbei der unvollständige Code:
Dim arrDAta As Variant
Private Sub UserForm_Initialize()
' Listbox 1 füllen
Dim iLastrow As Integer
With Worksheets("Tabelle1")
iLastrow = .Cells(.Rows.Count, 1).End(xlUp).Row
arrDAta = .Range(.Cells(4, 1), .Cells(iLastrow, 21)).Value
End With
With ListBox1
.ColumnCount = 21
.ColumnWidths = "1,2cm;2,8cm;2,7cm;0cm;0cm;0cm;0cm;0cm;1cm;1cm;1cm;1cm;4,cm;1,5cm;0,9cm; _
_
0,9cm;1,3cm;1cm;1cm;1,2cm;5cm;"
.ColumnHeads = False
.List() = arrDAta
.ListIndex = .ListCount - 1
End With
'Combobox1+2 - Filter setzen aus Tabelle1
Dim obj1 As Object
Dim obj2 As Object
Dim lngIndx As Long
Set obj1 = CreateObject("SCRIPTING.DICTIONARY")
Set obj2 = CreateObject("SCRIPTING.DICTIONARY")
With Worksheets("Tabelle1")
For lngIndx = 4 To .Cells(.Rows.Count, 1).End(xlUp).Row
obj1(.Cells(lngIndx, 14).Value) = 0
obj2(.Cells(lngIndx, 16).Value) = 0
Next
End With
ComboBox1.List = obj1.keys
ComboBox2.List = obj2.keys
End Sub
Private Sub combobox1_Change()
' wie kann ich an Hand des Eintrags in der Combobox die mehrspaltige Listbox filtern?
End Sub

Private Sub ListBox1_Click()
' Listeneinträge listbox1 zu listbox2  übernehmen
' folgender Code übernimmt nur die erste Spalte?
Dim iCounter As Integer
ListBox2.AddItem
For iCounter = 0 To 2
If iCounter 

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einträge aus mehrspaltigen Listbox übernehmen
01.09.2018 18:44:01
Oberschlumpf
:-))
...anbei der UNvollständige Code...
Prima Plan^^
Pape, zeig uns bitte per Upload (d)eine (Bsp)Datei mit Bsp-Daten und dem vollständigen Code und dem Userform.
Ciao
Thorsten
AW: Einträge aus mehrspaltigen Listbox übernehmen
01.09.2018 19:55:55
Pape
Hallo Thorsten,
ok ist wohl bischen unübersichtlich...
Anbei mal eine Mappe - vielleicht wirds dann klarer:
https://www.herber.de/bbs/user/123686.xlsm
AW: Einträge aus mehrspaltigen Listbox übernehmen
02.09.2018 10:03:30
Oberschlumpf
Hi Pape,
hier, versuch mal
https://www.herber.de/bbs/user/123691.xlsm
Ich hab echt lange + viel versucht!
Aber ohne eine Hilfstabelle, hier hat sie den Namen "Tabelle2", kam ich nicht weiter.
Das Problem bei Listboxen ist, dass sie bei Verwendung von .AddItem maximal nur 10 Spalten enthalten darf.
Deine Listbox1+2 haben aber 16 Spalten.
Die Grenze von max 10 Spalten kann man umgehen, in dem man anstelle von .AddItem die Methode .RowSource verwendet.
Hier ist es aber erforderlich, dass der Listbox2 eben auch ein gültiger Tabellenbereich zugewiesen wird.
Ich habe deine Anfrage "Wie fülle ich Listbox2 nach Doppelklick in Listbox1" so gelöst
1. Klick auf Button öffnet das Userform mit den Listboxes + anderen Controls
2. Tabelle2 wird vollständig geleert
3. Doppelklick in Listbox1 überträgt die gewählten Einträge aus Listbox1 in die nächste leere Zeile in
Tabelle2
4. Mit ListBox2.RowSource = ... wird der gefüllte Bereich aus Tabelle2 in Listbox2 übertragen
Mit jedem weiteren Doppelklick in Listbox1 wird in Tabelle2 UND in Listbox2 eine weitere Datenzeile hinzugefügt
5. Nach Schließen des Userforms und Wiederholung ab 1. beginnt alles von vorn
Ich habe Fragen
a) du schreibst "Ich möchte gerne Einträge aus diesem Listenfeld (bspw. durch Doppelklick)..."
Ok, du erwähnst BSPW., aber wieso hast du nicht DblClick, sondern Click für Listbox1 programmiert?
b) du benutzt in Listbox1 16 Spalten, hast aber die Spaltenbreite für die Spalten 4 bis 8 auf 0 gesetzt. Wieso?
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Einträge aus mehrspaltigen Listbox übernehmen
02.09.2018 13:08:38
Pape
Hallo Thorsten,
ganz vielen Dank für Deine Mühe. Mit der Lösung komme ich super zurecht - die "Hilfstabelle" stört kein bischen, man kommt ja zum Ziel...
Zu Deinen Fragen:
a) ja stimmt - hätte ich auch gleich Doppleklick machen können (und müssen - somst hat man nämlich in Listbox2 gleich den ersten Eintrag durch die Markierung in Listbox1...)
b) die Spalten müssen in der Listbox einfach nicht sichtbar sein - so ist sie übersichtlicher. Ich kenne keine Methode nur bestimmte Spalten in einer Listbox abzubilden. Aber selbst wenn bräuchte immer noch 11 Spalten und müsste mit der Hilfstabelle arbeiten
Jetzt habe ich nur das "Problem", dass ich mit meiner Combobox zum Filtern auch nicht weiterkomme, da ich hier ebenfalls mit .Additem arbeiten wollte... Einfaches Filtern in der Tabelle klappt ja leider nicht, da in der Listbox trotzdem alle Werte eingelesen werden. Hast Du da auch eine Idee?
Hier mein gedachter Code für das Filtern der Listbox über eine Combobox:
Private Sub combobox1_Change()
' Listbox1 filtern nach combobox1
ListBox1.Clear
Dim a As Object
For Each a In Sheets("Tabelle1").Range("N4:N" & Sheets("Tabelle1").Cells(Rows.Count, 1).End( _
xlUp).Row)
If a.Value = ComboBox1.Value Then
ListBox1.AddItem a.Offset(0, 1).Value
End If
Next a
End Sub

Anzeige
AW: Einträge aus mehrspaltigen Listbox übernehmen
02.09.2018 16:13:43
Oberschlumpf
Hi Pape,
ok, danke. Deine Antwort zu b) hatte ich in dem Moment, als ich auf Absenden klickte :-)
So, hier, versuch mal wieder
https://www.herber.de/bbs/user/123699.xlsm
1. Nach Aufrufen des Userforms sieht alles aus wie gehabt
2. Nach Auswahl eines Wertes zum Filtern werden...
...Inhalt Listbox1 gelöscht
...Inhalt Listbox2 gelöscht
...Inhalt Tabelle2 gelöscht
3. Alle Zeilen in Tabelle1, die in Spalte N den Filterwert enthalten, werden kopiert + in Tabelle2 eingefügt
4. Jetzt erhält Listbox1 alle "gefilterten" Zeilen aus Tabelle2
Inhalt Tabelle2 wird wieder gelöscht
5. Bei Doppelklick in Listbox1 wiederholt sich nun alles wie in meiner letzten Beantwortung beschrieben
So, und wenn du nun auch noch eine Lösung haben möchtest für "Schnellsuche über Nachname:" und/oder "Gruppe-Nr:", dann erstell bitte jeweils einen neuen Thread. :-)
Denn bis hier hin bin ich der einzige Antworter. Ich helfe ja gern, und vllt helfe ich auch wieder in deinen neuen Threads, aber ich mag nicht gern der Einzige Helfer bleiben ;-)
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Einträge aus mehrspaltigen Listbox übernehmen
02.09.2018 18:50:44
Pape
Hallo,
Du konntest helfen... Nochmals vielen Dank. Bis jetzt funktioniert alles gut. Ich werde Deinen Rat folgen und ggf. einen neuen Thread aufmachen, sollten in der Folge nochmal Fragen auftauchen. Aber die von Dir angesprochenen Beispiele laufen... ;-)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige