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

Forumthread: Einträge in Listbox per VBA auswählen

Einträge in Listbox per VBA auswählen
07.09.2017 09:08:20
Armin
Hallo,
auf einem Tabellenblatt befindet sich eine ActiveX-Listbox, siehe beigefügten Screenshot.
Userbild
Ziel ist, dass per VBA Einträge ausgewählt werden, also wie im Beispiel die Einträge 2, 6 und 8.
Die Eigenschaft "Multiselect" ist aktiviert, also manuell funktioniert die Auswahl ohne Probleme und ich kann die manuell gewählten Einträge auch per VBA auslesen.
Was ich nun bräuchte ist aber wie beschrieben genau das Gegenteil, dass ich bestimmte Einträge per VBA auswählen kann. Der Code sollte also die vorgegebenen Einträge automatisch selektieren.
Herzlichen Dank für eure Tipps schon mal im Voraus.
LG Armin
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einträge in Listbox per VBA auswählen
07.09.2017 09:29:52
Beverly
Hi Armin,
z.B. so:
Sub MultiAuswahl()
Dim lngZeile As Long
With ActiveSheet.OLEObjects(1).Object
For lngZeile = 0 To .ListCount - 1
If lngZeile Mod 2 = 0 Then .Selected(lngZeile) = True
Next lngZeile
End With
End Sub


Anzeige
AW: Einträge in Listbox per VBA auswählen
07.09.2017 10:42:08
Armin
Hallo Karin,
super, das passt genau.
Ganz lieben Dank!
Armin
;
Anzeige
Anzeige

Infobox / Tutorial

Einträge in Listbox per VBA auswählen


Schritt-für-Schritt-Anleitung

Um in einer ActiveX-Listbox bestimmte Einträge per VBA auszuwählen, kannst Du folgendem Schritt-für-Schritt-Plan folgen:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (dein_dateiname)" und wähle Einfügen > Modul.
  3. Kopiere den folgenden VBA-Code:

    Sub MultiAuswahl()
       Dim lngZeile As Long
       With ActiveSheet.OLEObjects(1).Object
           For lngZeile = 0 To .ListCount - 1
               If lngZeile Mod 2 = 0 Then .Selected(lngZeile) = True
           Next lngZeile
       End With
    End Sub
  4. Anpassen des Codes:

    • Ändere die Bedingung im If-Statement, falls Du andere Einträge auswählen möchtest, z. B. für das Auswählen der Einträge 2, 6 und 8:
      If lngZeile = 1 Or lngZeile = 5 Or lngZeile = 7 Then .Selected(lngZeile) = True
  5. Führe das Makro aus:

    • Gehe zurück zu Excel und führe das Makro über Entwicklertools > Makros aus.

Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"

    • Stelle sicher, dass die Listbox als erstes OLE-Objekt auf dem Blatt existiert. Du kannst den Index in OLEObjects(1) anpassen, falls Du mehrere Listboxen hast.
  • Fehler: Auswahl funktioniert nicht

    • Überprüfe, ob die Multiselect-Eigenschaft der Listbox aktiviert ist.

Alternative Methoden

Falls Du eine alternative Methode zum Auswählen von Einträgen in einer Listbox benötigst, kannst Du auch die ListIndex-Eigenschaft verwenden, um einen einzelnen Eintrag auszuwählen:

Sub EintragAuswählen()
    With ActiveSheet.OLEObjects(1).Object
        .ListIndex = 2 ' Wähle den dritten Eintrag aus
    End With
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du bestimmte Einträge in einer Listbox auswählen kannst:

  1. Gerade Einträge auswählen:

    Sub GeradeEintraege()
       Dim lngZeile As Long
       With ActiveSheet.OLEObjects(1).Object
           For lngZeile = 0 To .ListCount - 1
               If lngZeile Mod 2 = 0 Then .Selected(lngZeile) = True
           Next lngZeile
       End With
    End Sub
  2. Bestimmte Einträge selektieren:

    Sub BestimmteEintraege()
       Dim lngZeile As Long
       With ActiveSheet.OLEObjects(1).Object
           .Selected(1) = True ' Eintrag 2 auswählen
           .Selected(5) = True ' Eintrag 6 auswählen
           .Selected(7) = True ' Eintrag 8 auswählen
       End With
    End Sub

Tipps für Profis

  • Verwende Schleifen, um mehrere Einträge dynamisch auszuwählen.
  • Überlege, wie Du die Auswahl basierend auf Benutzerinput gestalten kannst, um die Interaktivität zu erhöhen.
  • Teste Deinen Code gründlich, insbesondere wenn Du mit verschiedenen Listboxen und Inhalten arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Einträge gleichzeitig auswählen? Um mehrere Einträge auszuwählen, stelle sicher, dass die Multiselect-Eigenschaft der Listbox auf fmMultiSelectMulti gesetzt ist. Dann kannst Du die oben genannten Methoden verwenden.

2. Kann ich die Auswahl rückgängig machen? Ja, Du kannst die .Selected-Eigenschaft auf False setzen, um die Auswahl eines Eintrags aufzuheben. Beispiel:

.Selected(1) = False ' Entfernt die Auswahl des zweiten Eintrags

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige