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

ListBox Multiselect Ausgabe
01.02.2019 01:18:31
Martin
Guten Tag zusammen.
Stehe vor folgendem Problem:
Ich habe eine ListBox die mit ListFillRange befüllt wurde, eine Mehrfachauswahl ist möglich.
Jetzt werden die markierten Einträge der ListBox mit folgendem Button ausgeben:

Private Sub CommandButton1_Click()
Const zeile = 10
Const spalte = 2
Dim zähler As Integer
Dim i As Integer
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Cells(zeile + zähler, spalte) = .List(i)
zähler = zähler + 1
End If
Next i
End With
End Sub

Diese Daten werden dann in einer anderen Tabelle weiterverwendet, jetzt ist es oft so das nachträglich weitere Werte in der Listbox ausgewählt werden.
Wenn aber die Excel Datei geschlossen und wieder geöffnet wird,dann ist die Markierung der Listeneinträge verschwunden. So müssten mühsam die Listeneinträge erneut markiert werden, da bei einzeln ausgewählten Einträgen die Ausgabeliste überschrieben wird.
1) Kann der Code so geändert werden, dass bei nachträglicher Markierung die ausgegebene Zelle hinten an die nächste freie Zelle angehängt wird und nicht Zelle B10 überschreibt?
2) Kann die Markierung der Listbox nach Schließen und erneutem Öffnen der Excel-Datei irgendwie beibehalten werden?
Vielen Dank
Martin

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

Betreff
Datum
Anwender
Anzeige
AW: ListBox Multiselect Ausgabe
01.02.2019 03:59:30
Werner
Hallo Martin,
das Überschreiben verhinderst du so:
Private Sub CommandButton1_Click()
Dim loLetzte As Long, i As Long
loLetzte = Cells(Rows.Count, 2).End(xlUp).Offset(1).Row
If Cells(10, 2) = "" Then loLetzte = 10
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Cells(loLetzte, 2) = .List(i)
loLetzte = loLetzte + 1
End If
Next i
End With
End Sub
Und wenn ich das richtig sehe, dann willst du ja wohl die Einträge in der Listbox vorausgewählt haben, die du zuvor ins Tabellenblatt übertragen hast.
Dann z.B. mit einer Schleife über die Tabelleneinträge und die Listboxeinträge im Workbook_Open
Private Sub Workbook_Open()
Dim loLetzte As Long, z As Long
'Blattname anpassen
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 2).End(xlUp).Row
If loLetzte >= 10 Then
For i = 10 To loLetzte
With .ListBox1
For z = 0 To .ListCount - 1
If Worksheets("Tabelle1").Cells(i, 2) = .List(z) Then
.Selected(z) = True
End If
Next z
End With
Next i
End If
End With
End Sub
Gruß Werner
Anzeige
AW: ListBox Multiselect Ausgabe
01.02.2019 10:59:04
Martin
Danke vielmals Werner!
Genau das wollte ich erreichen.
Liebe Grüße
Martin
AW: ListBox Multiselect Ausgabe
01.02.2019 12:19:32
Martin
Ich hätte dann doch noch eine Frage.
Wie kann ich mit Workbook_Open die Einträge einer zweiten ListBox, im selben Tabellenblatt, vorausgewählt anzeigen lassen?
Wie müsste der Code angepasst werden, also ListBox2 und eine weitere Tabelle zur Vorauswahl.
Private Sub Workbook_Open()
Dim loLetzte As Long, z As Long
'Blattname anpassen
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 2).End(xlUp).Row
If loLetzte >= 10 Then
For i = 10 To loLetzte
With .ListBox1
For z = 0 To .ListCount - 1
If Worksheets("Tabelle1").Cells(i, 2) = .List(z) Then
.Selected(z) = True
End If
Next z
End With
Next i
End If
End With
End Sub
Danke und beste Grüße
Anzeige
AW: ListBox Multiselect Ausgabe
01.02.2019 13:53:32
Werner
Hallo Martin,
ich habe ja keine Ahnung wo die Daten deiner "zweiten Tabelle" sind.
Gruß Werner
AW: ListBox Multiselect Ausgabe
01.02.2019 14:28:44
Martin
Oh verzeihung, die Tabelle beginnt bei M2.
Gruß Martin
AW: ListBox Multiselect Ausgabe
01.02.2019 15:05:08
Werner
Hallo Martin,
so:
Private Sub Workbook_Open()
Dim loLetzte As Long, z As Long
'Blattname anpassen
With Worksheets("Tabelle1")
'Ermitteln letzte belegte Zelle in Spalte M = 13
loLetzte = .Cells(.Rows.Count, 13).End(xlUp).Row
'Daten ab Zeile 2, deshalb Beginn in Zeile 2
If loLetzte >= 2 Then
For i = 2 To loLetzte
With .ListBox2
For z = 0 To .ListCount - 1
'Cells(i, 13) = i = Zeile / 13 = Spalte
If Worksheets("Tabelle1").Cells(i, 13) = .List(z) Then
.Selected(z) = True
End If
Next z
End With
Next i
End If
End With
End Sub
Gruß Werner
Anzeige
AW: ListBox Multiselect Ausgabe
01.02.2019 15:46:02
Martin
Danke Werner,
aber wie verbinde ich jetzt die beiden vorangegangenen Codes, da ein "Private Sub Workbook_Open()" ja nur einmal ausgeführt werden kann und sonst die Meldung "Mehrdeutiger Name: Worbook Open () kommt.
Also Kombination der Codes - Vorauswahl in ListBox1 (mit Tabelle ab B10) und ListBox2 (mit Tabelle ab M2).
AW: ListBox Multiselect Ausgabe
01.02.2019 16:02:42
Werner
Hallo Martin,
na einfach beide ins Workbook_Open
Private Sub Workbook_Open()
Dim loLetzte As Long, z As Long
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 2).End(xlUp).Row
If loLetzte >= 10 Then
For i = 10 To loLetzte
With .ListBox1
For z = 0 To .ListCount - 1
If Worksheets("Tabelle1").Cells(i, 2) = .List(z) Then
.Selected(z) = True
End If
Next z
End With
Next i
End If
loLetzte = .Cells(.Rows.Count, 13).End(xlUp).Row
If loLetzte >= 2 Then
For i = 2 To loLetzte
With .ListBox2
For z = 0 To .ListCount - 1
If Worksheets("Tabelle1").Cells(i, 13) = .List(z) Then
.Selected(z) = True
End If
Next z
End With
Next i
End If
End With
End Sub
Gruß Werner
Anzeige
AW: ListBox Multiselect Ausgabe
02.02.2019 10:20:52
Martin
Perfekt, danke!
Gerne u. Danke für die Rückmeldung. o.w.T.
02.02.2019 10:38:03
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige