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

Forumthread: Listbox: ein Item selektiert?

Listbox: ein Item selektiert?
08.07.2020 15:59:06
Klaus
Hallo Gemeinde,
ich möchte gerne überprüfen ob für eine Listbox in einer Userform (Me.lsbThemenfeld) auch ein Eintrag ausgewählt wurde. Wenn nicht hätte ich gerne eine Meldung.
Nachdem ich jetzt tausend und eine Variante ausprobiert habe, frage ich Euch.
Mein letzter Status ist:
If Me.lsbThemenfeld.Selected = Null Then
MsgBox "Bitte wählen Sie aus der Liste ein Themenfeld aus (anklicken)"
Exit Sub
End If
An anderer Stelle habe ich das mit lsbThemenfeld.SelectesItem = 0 gesehen. Aber selecteditem ist in meinem Katalog nicht enthalten.
Hat irgendwer einen Tipp? Ich nutze EXCEL 2010
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox: ein Item selektiert?
08.07.2020 16:08:18
Daniel
Hi
es kommt darauf an, was für einen Auswahltyp du eingestellt hast.
bei SingleSelect kannst du einfach den ListIndex abfragen.
wenn nichts selektiert ist, ist dieser -1
bei einer Multiselect-Listbox musst du mit einer Schleife über alle Einträge laufen und das .Select abfragen.
Dieses kannst du einfach aufaddieren (nicht ausgewählt: 0, ausgewählt: -1):
for i = 0 to Listbox.ListCount - 1
x = x + Listbox.Selected(i)
Next
If x = 0 then …
Gruß Daniel
Anzeige
AW: Listbox: ein Item selektiert?
08.07.2020 16:12:54
onur
If Me.lsbThemenfeld.ListIndex = -1 Then DEINE MELDUNG
AW: Listbox: ein Item selektiert?
08.07.2020 16:16:11
Matthias
Moin!
Wie hast du den die Listbox eingestellt?
Wenn es single select ist, also nur ein Wert angeklicken kannst, reichte glaube ich:
If Me.lsbThemenfeld.listindex = -1 then 

Wenn du aber Multiselect eingestellt hast, musst du in einer Schleife alle Einträge durchlaufen und prüfen, ob sie ausgewählt wurden. Geht unegfähr so (ungetestet)
Dim ausgewählt As Boolean
ausgewählt = False
For i = 1 To Me.ListBox2.ListCount
If Me.ListBox2.Selected(i-1) = True Then
ausgewählt = True
Exit For
End If
Next
If ausgewählt = False Then

VG
Anzeige
AW: Listbox: ein Item selektiert?
08.07.2020 18:00:42
Klaus
ja ich habe nur ein Feld in der Listbox drinnen.
Vielen Dank für die Tipps.
Werde das heute nacht noch ausprobieren und dann noch ein Feed Back geben.
Liebe Gruße
Klaus
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Einträge in einer Excel VBA Listbox überprüfen


Schritt-für-Schritt-Anleitung

Um zu überprüfen, ob ein Eintrag in einer Listbox in einer Userform ausgewählt wurde, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor in Excel (ALT + F11).
  2. Erstelle eine Userform und füge eine Listbox hinzu. Benenne diese z.B. lsbThemenfeld.
  3. Füge einen Button hinzu, um die Auswahl zu überprüfen.
  4. Verwende den folgenden VBA-Code im Klick-Ereignis des Buttons:

    Private Sub CommandButton1_Click()
       If Me.lsbThemenfeld.ListIndex = -1 Then
           MsgBox "Bitte wählen Sie aus der Liste ein Themenfeld aus (anklicken)"
           Exit Sub
       End If
       MsgBox "Ausgewähltes Thema: " & Me.lsbThemenfeld.Value
    End Sub

Für eine Multiselect-Listbox musst du eine Schleife verwenden, um die Auswahl zu überprüfen:

Dim ausgewählt As Boolean
ausgewählt = False
For i = 0 To Me.lsbThemenfeld.ListCount - 1
    If Me.lsbThemenfeld.Selected(i) Then
        ausgewählt = True
        Exit For
    End If
Next i
If Not ausgewählt Then
    MsgBox "Bitte wählen Sie mindestens ein Thema aus."
End If

Häufige Fehler und Lösungen

  • Fehler: "Objekt erforderlich"
    Stelle sicher, dass du den richtigen Namen für deine Listbox (z.B. lsbThemenfeld) verwendest.

  • Problem: ListIndex gibt nicht -1 zurück
    Wenn du ListIndex abfragst und keine Auswahl getroffen wurde, sollte der Wert -1 sein. Bei Multiselect kann es sein, dass du die Schleife durchlaufen musst, um die ausgewählten Einträge zu überprüfen.


Alternative Methoden

Du kannst auch die ListCount-Eigenschaft nutzen, um die Anzahl der Einträge in der Listbox zu überprüfen. Wenn diese 0 ist, kann davon ausgegangen werden, dass keine Auswahl getroffen wurde.

If Me.lsbThemenfeld.ListCount = 0 Then
    MsgBox "Die Listbox ist leer."
End If

Für eine Excel VBA ComboBox kannst du die Index-Eigenschaft verwenden, um den aktuell ausgewählten Eintrag zu überprüfen.


Praktische Beispiele

Hier sind einige Beispiele für verschiedene Szenarien:

  • Einzelne Auswahl in der Listbox:
If Me.lsbThemenfeld.ListIndex = -1 Then
    MsgBox "Kein Eintrag ausgewählt."
Else
    MsgBox "Ausgewählte Position: " & Me.lsbThemenfeld.List(Me.lsbThemenfeld.ListIndex)
End If
  • Mehrere ausgewählte Einträge in einer Multiselect-Listbox:
Dim selectedItems As String
selectedItems = "Ausgewählte Einträge: "
For i = 0 To Me.lsbThemenfeld.ListCount - 1
    If Me.lsbThemenfeld.Selected(i) Then
        selectedItems = selectedItems & Me.lsbThemenfeld.List(i) & ", "
    End If
Next i
MsgBox Left(selectedItems, Len(selectedItems) - 2) ' Entfernt das letzte Komma

Tipps für Profis

  • Nutze die Ereignisse der Listbox, um automatisch auf Änderungen zu reagieren (z.B. Click oder Change).
  • Überlege, ob du Datenvalidierung in der Userform einbauen möchtest, um sicherzustellen, dass die Benutzer nur gültige Einträge auswählen können.
  • Verwende die ListBox.Selected-Eigenschaft, um den Status einzelner Listbox-Elemente direkt auszulesen.

FAQ: Häufige Fragen

1. Wie kann ich den Wert des ausgewählten Eintrags in einer Listbox erhalten?
Du kannst den Wert mit Me.lsbThemenfeld.Value abrufen, wenn ein Eintrag ausgewählt ist.

2. Was ist der Unterschied zwischen Single-Select und Multi-Select in einer Listbox?
Bei Single-Select kann der Benutzer nur einen Eintrag auswählen, während bei Multi-Select mehrere Einträge gleichzeitig ausgewählt werden können.

3. Wie kann ich die Auswahl in einer Listbox zurücksetzen?
Um die Auswahl zurückzusetzen, kannst du Me.lsbThemenfeld.ListIndex = -1 verwenden, um keine Auswahl zu haben. Bei einer Multiselect-Listbox musst du die Selected-Eigenschaft für jeden Eintrag auf False setzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige