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

UF mit 2 Listboxen

UF mit 2 Listboxen
05.11.2014 16:39:01
Stefan
Hallo Forum,
nun war ich froh das ich eine Listbox mit leben erwecken kann.
Was stelle ich nun fest. Irgendwie sind meine Daten nich in der richtigen Reihenfolge angeordnet (Senkrecht / Waagerecht)
Ich bitte um Hilfe.
Ich habe eine Datei erstellt damit niemand das Ding nachbauen muss.
In der Datei sind 2 UF. Die 1 haut auch so hin wie geplant, das paßt abe rmit meinen Daten nicht.
Die Zweite UF bezieht ihre Daten aus Tabellenblatt4.
Erreichen möchte ich nun folgendes:
Beim Aufruf der UF2 soll die Listbox1 mit den Werten im Bereich B2:B9 aufgefüllt werden.
Dabei sollen die doppelten Werte aber nicht angezeigt werden.
Wird nun der Wert in Zelle B3, in meinem Beispiel Deutschland angeklickt,
sollen in der Listbox 2 alle Städte aus Deutschland mit den dazugehörigen
Werten aus den Spalten D und E angezeigt werden.
Wenn sich jemand die Mühe macht mir zu helfen hab ich noch eine Bitte.
Bitte viele Kommentare verwenden damit ich es begreife, weil ich würde es gerne lernen und verstehen. Ich habe immer noch große Probleme Zellen mit Rows und Cells
anzusprechen. Da beides Möglich ist wäre es toll beide Varianten einmal zu sehen.
So unter dem Motte Tabellenblat1,A1:B3 sieht dann so aus ? Sheet 1 ja und dann weiß ich schon nicht.
Ich danke im Vorfeld für Mühe und Zeit
Stefan
https://www.herber.de/bbs/user/93575.xlsm

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UF mit 2 Listboxen
05.11.2014 17:08:01
Rudi
Hallo,
Private Sub ListBox1_Click()
With ListBox2
.Clear
.ColumnCount = 3
End With
With Sheets(3)
For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
If .Cells(i, 2) = ListBox1 Then
ListBox2.AddItem .Cells(i, 3)
ListBox2.List(ListBox2.ListCount - 1, 1) = .Cells(i, 4)
ListBox2.List(ListBox2.ListCount - 1, 2) = .Cells(i, 5)
End If
Next
End With
End Sub

Private Sub UserForm_Initialize()
Dim objDic As Object, rngC As Range
Set objDic = CreateObject("Scripting.dictionary")
With Sheets(3)
For Each rngC In .Range(.Cells(2, 2), .Cells(Rows.Count, 2).End(xlUp))
objDic(rngC.Value) = 0
Next
End With
ListBox1.List = objDic.keys
End Sub
Ein Dictionary stellt eine Sammlung von Schlüssel-Wert-Paaren dar. Da es jeden Schlüssel nur einmal geben kann, hat mat schnell und komfortabel eine Liste mit einmaligen Werten.
Gruß
Rudi

Anzeige
AW: UF mit 2 Listboxen
05.11.2014 19:01:18
Stefan
Hallo Rudi, vorweg, Danke.
Nun aber meine Verständnis Fragen: (Und ich habe schon experimentiert, bekomme es aber nicht hin.)
Frage 1.) Wenn ich nun als Index nicht die Spalte B möchte sondern die Spalte D ( alles was dann links davon steht ist nicht wichtig) wie muss ich wo was ändern?
Frage 2.) Habe eine 3 und 4 Listbox eingebaut.
Das Blatt 3 habe ich in der Spalte I um Namen, Peter Paul, Mary, erweitert.
In Spalte J stehen Personen die die Leute aus Spalte I kennen und in spalte K das Alter der Personen die in Spalte J stehen.
Kann mein Vorhaben in einer UF überhaupt klappen ?
Als Anlage wieder mein Bausatz
Gruß
Stefan
https://www.herber.de/bbs/user/93578.xlsm

Anzeige
AW: UF mit 2 Listboxen
05.11.2014 19:31:45
Rudi
Hallo,
1.
die hinteren 2en in 4 ändern
Private Sub UserForm_Initialize()
Dim objDic As Object, rngC As Range
Set objDic = CreateObject("Scripting.dictionary")
With Sheets(3)
For Each rngC In .Range(.Cells(2, 2), .Cells(Rows.Count, 2).End(xlUp))
objDic(rngC.Value) = 0
Next
End With
ListBox1.List = objDic.keys
End Sub
2.
das geht genauso wie bei den ersten beiden Listboxen
Nur die ersten Namen aus I (Spalte 9) holen und die Bekannten und deren Alter aus J und K.
d.h.
Private Sub UserForm_Initialize()
Dim objDic As Object, rngC As Range
Set objDic = CreateObject("Scripting.dictionary")
With Sheets(3)
For Each rngC In .Range(.Cells(2, 2), .Cells(Rows.Count, 2).End(xlUp))
objDic(rngC.Value) = 0
Next
End With
ListBox1.List = objDic.keys
objDic.RemoveAll  'Dictionary leeren
With Sheets(3)
For Each rngC In .Range(.Cells(2, 9), .Cells(Rows.Count, 9).End(xlUp))
objDic(rngC.Value) = 0
Next
End With
ListBox3.List = objDic.keys
End Sub

Gruß
Rudi

Anzeige
AW: UF mit 2 Listboxen
05.11.2014 22:07:20
Crazy
Hallo
hier der geänderte Code für Listbox3
Private Sub ListBox3_Click()
With ListBox4
.Clear
.ColumnCount = 3  ' gibt an wieviele Spalten dargestellt werden sollen
End With
With Sheets(3)
For i = 2 To .Cells(.Rows.Count, 9).End(xlUp).Row
If .Cells(i, 9) = ListBox3 Then
ListBox4.AddItem .Cells(i, 10) 'Erste Spalte aus denen Werte zugeordnet werden. Hier  _
die 10 Spalte (I)
ListBox4.List(ListBox4.ListCount - 1, 1) = .Cells(i, 11) 'Zweite Spalte aus denen Werte  _
zugeordnet werden. Hier die 4 Spalte (J)
ListBox4.List(ListBox4.ListCount - 1, 2) = .Cells(i, 12) 'Zweite Spalte aus denen Werte  _
zugeordnet werden. Hier die 4 Spalte (K)
End If
Next
End With
End Sub

MfG Tom

Anzeige
AW: UF mit 2 Listboxen
06.11.2014 07:34:08
Stefan
Guten Morgen Tom und Rudi,
vielleicht war es gestern schon etwas spät. Nachdem ich mir das nun angeschaut habe und es verglichen hab, verstehe ich heute nicht warum ich das gestern nicht hinbekommen habe.
Ich sage hier erst Einmal danke.
In Anlehnung an dieses Beispiel kommt bei mir nun aber folgende Überlegung und Frage.
Wenn ich zusätzlich 3 TextBoxen in die UF einbaue, um die Daten dann ggf später neu zu schreiben
erreiche ich das befüllen der TextBoxen mit
Private Sub ListBox2_Click()
TextBox1 = ListBox2.List(ListBox2.ListCount - 1, 0)
TextBox2 = ListBox2.List(ListBox2.ListCount - 1, 1)
TextBox3 = ListBox2.List(ListBox2.ListCount - 1, 2)
End Sub

Nun habe ich aber das Problem (siehe Mappe) wenn ich Deutschland in Listbox1 auswähle,
werden die passenden Städte in Listbox2 angezeigt. Dort stehen nun 4 Städte.
Wie erreiche ich den nun, dass ich Hamburg in die Textbox1 bekomme und nicht automatisch München drin steht.
Gruß
Stefan
https://www.herber.de/bbs/user/93588.xlsm

Anzeige
AW: UF mit 2 Listboxen
06.11.2014 09:12:07
Rudi
Hallo,
Private Sub ListBox2_Click()
TextBox1 = ListBox2.List(ListBox2.ListIndex, 0)
TextBox2 = ListBox2.List(ListBox2.ListIndex, 1)
TextBox3 = ListBox2.List(ListBox2.ListIndex, 2)
End Sub

bzw. kürzer
Private Sub ListBox2_Click()
TextBox1 = ListBox2.Column(0)
TextBox2 = ListBox2.Column(1)
TextBox3 = ListBox2.Column(2)
End Sub
Gruß
Rudi

AW: Vielen Danke
06.11.2014 09:26:11
Stefan
genauso sollte es sein.
Ich Danke Euch beiden für Eure Mühe und Geduld.
Stefan

AW: UF mit 2 Listboxen
06.11.2014 09:13:17
Crazy
Hallo
so? (ungetestet)
Private Sub ListBox2_Click()
With Listbox2
TextBox1 = .List(.ListIndex)
TextBox2 = .List(.ListIndex, 1)
TextBox3 = .List(.ListIndex, 2)
End With
End Sub

MfG Tom

Anzeige
Nachbrenner
06.11.2014 12:07:14
Stefan
Mahlzeit,
ich habe noch einen Nachbrenner.
Im Moment befülle ich die beiden Listboxen ja wie folgt:
Private Sub ListBox1_Click()
With ListBox2
.Clear
.ColumnCount = 4
End With
With Sheets(2)
For i = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
If .Cells(i, 2) = ListBox1 Then
ListBox2.AddItem .Cells(i, 3)
ListBox2.List(ListBox2.ListCount - 1, 1) = .Cells(i, 4)
ListBox2.List(ListBox2.ListCount - 1, 2) = .Cells(i, 5)
ListBox2.List(ListBox2.ListCount - 1, 3) = .Cells(i, 6)
End If
Next
End With
End Sub

Private Sub UserForm_Initialize()
Dim objDic As Object, rngC As Range
Set objDic = CreateObject("Scripting.dictionary")
With Sheets(2)
For Each rngC In .Range(.Cells(2, 2), .Cells(Rows.Count, 2).End(xlUp))
objDic(rngC.Value) = 0
Next
End With
ListBox1.List = objDic.keys
End Sub
Kann ich die Spaltenbreite der Listbox2 bestimmen?
Wenn ja wie / Wo muss sich was ändern?
Gruß
Stefan

Anzeige
AW: Nachbrenner
06.11.2014 12:55:37
Crazy
Hallo
das könnte so gehen
Private Sub ListBox1_Click()
With ListBox2
.Clear
.ColumnCount = 4
.columnwidhts = "25;50;25;50"'

AW: Nachbrenner
06.11.2014 15:28:23
Stefan
Hallo Tom,
bekomme immer die Meldung:
Fehler beim Kompilieren
Methode oder Datenobjekt nicht gefunden
Gruß
Stefan

AW: Nachbrenner
06.11.2014 15:34:47
Crazy
Hallo Stefan
da war ein Buchstabendreher drin
    With ListBox2
.Clear
.ColumnCount = 4
.ColumnWidths = "25;50;25;50" '

so sollte es passen
MfG Tom

AW: Danke o.T
06.11.2014 16:15:31
Stefan
.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige