Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: ausgewähltes listbox item

ausgewähltes listbox item
05.08.2004 09:55:30
david
Hi Leute!
Ich möchte die Werte der selektierten Listboxeinträge(multiselect) abfragen, d.h. wenn mehrere Werte ausgewält sind dann soll er nacheinander, wenn ein Item angekreuzt ist, abfragen,was bei diesem Item steht!
Vielen Dank im Voraus für eure Hilfe!
Mfg David
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ausgewähltes listbox item
05.08.2004 11:39:17
Nepumuk
Hallo David,
wen soll er fragen? Mal ein Beispiel, wie du ermitteln kannst, welcher Eintrag ausgewählt ist:


Private Sub CommandButton1_Click()
    Dim lngIndex As Long
    With ListBox1
        For lngIndex = 0 To .ListCount - 1
            If .Selected(lngIndex) Then MsgBox "Ausgewählt Zeile: " & CStr(lngIndex + 1) & " Eintrag " & CStr(.List(lngIndex)), 64, "Information"
        Next
    End With
End Sub


Gruß
Nepumuk
Anzeige
AW: ausgewähltes listbox item
05.08.2004 12:12:58
david
Mein Makro sollte das können:
Ich lasse alle Einträge von Zeile 1 in eine Lisitbox auflisten. Stimmt nun der ausgewählte Wert der Listbox(können auch mehrere Werte sein) dann soll er die gesammte Spalte, wo der jeweils ausgewählte wert in zeile 1 steht in das Blatt tabelle 2 kopieren(nebeneindander).
Meine Frage ist wie kann ich abrufen was neben dem makierten Wert einer Listbox steht, und nicht in welcher zeile der Listbox?
Vielen Dank für deine Hilfe!
Mfg,David
Makro:
Dim wks As Worksheet
Dim iCounter As Integer, iColumns As Integer, iRowz As Integer, iColumnl As Integer
Dim iRowT As Integer, iRow As Integer, iRowL As Integer
Set wks = Worksheets("Tabelle 2")
iColumnl = Cells(1, Columns.Count).End(xlUp).Column
For iColumns = 1 To iColumnl
Dim i As Integer
Dim iCtr As Long
With ListBox1
For iCtr = 0 To .ListCount - 1
If .Selected(iCtr) Then
If Cells(1, iColumns).Value = ? Then
iRowL = Cells(Rows.Count, iColumns).End(xlUp).Row
For iRowz = 1 To iRowL
If Cells(iRowz, 1).Value = "1" Then
iRowT = wks.Cells(Rows.Count, iColumns).End(xlUp) + 1
Columns(iColumns).Copy wks.Columns(iRowT)
End If
Next iRowz
End If
End If
Next iCtr
End With
Next iColumns
Application.CutCopyMode = False
End Sub
Anzeige
AW: ausgewähltes listbox item
05.08.2004 13:27:57
Nepumuk
Hallo David,
was soll ich darunter verstehen?
"Stimmt nun der ausgewählte Wert der Listbox(können auch mehrere Werte sein)"
Wie kann da was falsches drin stehen? Du kannst nur einen Vergleich ziehen. Mit was soll verglichen werden?
"wie kann ich abrufen was neben dem makierten Wert einer Listbox steht,"
Was steht da? Ich sehe kein Makro zum befüllen der Box. Ist die Listbox mehrspaltig?
Gruß
Nepumuk
Anzeige
AW: ausgewähltes listbox item
05.08.2004 14:10:42
david
Hi!
Es sind mehrere Items makiert,er soll nacheinander die ausgewählten Items abfragen.
Mit With ListBox1
For iCtr = 0 To .ListCount - 1
If .Selected(iCtr) Then
fragt er doch nur ab in WElcher Zeile eine Makierung ist, ich will aber vergleichen, wenn z.B Mappe 1 ein ausgewähltes Item ist, ob in Zelle("A1") auch Mappe 1 steht!
Thks, David
Anzeige
AW: ausgewähltes listbox item
05.08.2004 14:27:11
Nepumuk
Hallo David,
lässt sich aus der Zeilenposition des ausgewählen Listboxeintrages nicht auf die Zellposition rückschließen? Dann könntest du dir den Vergleich ersparen. Oder kommen die Einträge der Listbox irgendwo aus der Tabelle? Ich mache es dann immer so, dass ich in einer ausgeblendeten Spalte der Listbox die Zelladressen mitführe, aus welcher der Eintrag stammt.
Gruß
Nepumuk
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Ausgewähltes Listbox-Item in Excel VBA


Schritt-für-Schritt-Anleitung

Um den ausgewählten Listbox-Item in Excel VBA auszulesen, befolge diese Schritte:

  1. Erstelle eine Userform mit einer Listbox (z.B. ListBox1) und einem CommandButton (z.B. CommandButton1).

  2. Füge die folgenden VBA-Codezeilen in das Codefenster der Userform ein:

    Private Sub CommandButton1_Click()
       Dim lngIndex As Long
       With ListBox1
           For lngIndex = 0 To .ListCount - 1
               If .Selected(lngIndex) Then
                   MsgBox "Ausgewählt Zeile: " & CStr(lngIndex + 1) & " Eintrag " & CStr(.List(lngIndex)), vbInformation
               End If
           Next lngIndex
       End With
    End Sub
  3. Starte die Userform und wähle mehrere Items in der Listbox aus. Klicke auf den Button, um die ausgewählten Werte anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: Listbox zeigt keine ausgewählten Werte an.

    • Lösung: Stelle sicher, dass die MultiSelect-Eigenschaft der Listbox auf fmMultiSelectMulti gesetzt ist.
  • Fehler: Der Code gibt nur die Zeilenposition zurück, nicht den Wert.

    • Lösung: Verwende .List(lngIndex) innerhalb der Schleife, um den Wert des ausgewählten Items abzurufen.
  • Fehler: Makro funktioniert nicht in Excel.

    • Lösung: Überprüfe, ob das Makro aktiviert ist und ob du die richtige Excel-Version verwendest.

Alternative Methoden

Eine alternative Methode zur Abfrage des ausgewählten Listbox-Items ist die Verwendung eines Arrays, um die Werte zu speichern:

Private Sub CommandButton1_Click()
    Dim selectedItems() As String
    Dim i As Long, count As Long
    count = 0

    With ListBox1
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                ReDim Preserve selectedItems(count)
                selectedItems(count) = .List(i)
                count = count + 1
            End If
        Next i
    End With

    ' Ausgabe der ausgewählten Items
    MsgBox Join(selectedItems, ", ")
End Sub

Praktische Beispiele

  1. ListBox mit mehrspaltigen Daten: Wenn deine Listbox mehrere Spalten hat, kannst du den Wert in einer bestimmten Spalte so abrufen:

    If .Selected(iCtr) Then
       MsgBox "Wert in Spalte 2: " & .Column(1, iCtr) ' Spalte 2
    End If
  2. Kopieren von Werten in ein anderes Blatt: Um die ausgewählten Werte in ein anderes Arbeitsblatt zu kopieren, kannst du folgenden Code verwenden:

    Dim wks As Worksheet
    Set wks = Worksheets("Tabelle 2")
    Dim rowIndex As Long
    rowIndex = 1
    
    With ListBox1
       For iCtr = 0 To .ListCount - 1
           If .Selected(iCtr) Then
               wks.Cells(rowIndex, 1).Value = .List(iCtr)
               rowIndex = rowIndex + 1
           End If
       Next iCtr
    End With

Tipps für Profis

  • Verwende ListBox.Selected(i) und ListBox.List(i) zusammen, um den Index und den Wert des ausgewählten Items effizient auszulesen.
  • Integriere die Fehlerbehandlung in deinen Code, um sicherzustellen, dass bei unerwarteten Eingaben keine Abstürze auftreten.
  • Nutze die Eigenschaft .ListCount, um zu überprüfen, ob überhaupt Einträge in der Listbox vorhanden sind, bevor du versuchst, sie auszulesen.

FAQ: Häufige Fragen

1. Wie kann ich den Index des ausgewählten Listbox-Items abrufen?
Du kannst den Index mit .ListIndex abrufen, wenn nur ein Element ausgewählt ist.

2. Kann ich mehrere Items gleichzeitig auswählen?
Ja, stelle sicher, dass die MultiSelect-Eigenschaft der Listbox auf fmMultiSelectMulti eingestellt ist, um mehrere Items auszuwählen.

3. Wie kann ich den Wert des ausgewählten Items in einer anderen Zelle speichern?
Du kannst den Wert mit Cells(i, j).Value = ListBox1.List(iCtr) in eine Zelle speichern, wobei iCtr der Index des ausgewählten Items ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige