Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Listbox Items abfangen & weiter damit arbeiten

Listbox Items abfangen & weiter damit arbeiten
15.05.2018 15:31:41
Franz
Hallo,
kann man mit den Items einer Listbox weiterarbeiten & diese nochmal abfragen?
Kurzes Beispiel:
Befüllte Listbox
ListBox1.AddItem "Kunde 1"
ListBox1.AddItem "Kunde 2"
ListBox1.AddItem "Kunde 3"
ListBox1.AddItem "Kunde 4"

Nun kurze Abfrage:
'Wenn "Kunde 1" ausgewählt wurde, dann befülle Range mit "..."
'Wenn "kunde 2" ausgewählt wurde, dann befülle Range mit "..."

If ListBox1.Value = ListBox1.List(0)Then
Range("A12").Value = "Bankhaus Meier"
ElseIf Listbox1.Value = ListBox1.List(1) Then
Range("A12").Value = "Bankhaus Sparkasse"
End If

Kann mir da jemand helfen?
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox Items abfangen & weiter damit arbeiten
15.05.2018 15:57:07
Mullit
Hallo,
einfach über den Listindex im Click-Event der Box:
Option Explicit
Private Sub ListBox1_Click()
Select Case ListBox1.ListIndex
Case Is = 0
Range("A12").Value = "Bankhaus Meier"
Case Is = 1
Range("A12").Value = "Bankhaus Sparkasse"
Case Is = 2
Range("A12").Value = "Bankhaus Volksbank"
Case Else
Range("A12").Value = "Bankhaus Deutsche Bank"
End Select
End Sub

Gruß, Mullit
Anzeige
AW: Listbox Items abfangen & weiter damit arbeiten
16.05.2018 08:15:21
Franz
Hallo Mullit,
vielen Dank für deine Antwort.
Diese hilft mir leider nur bedingt weiter. Ich meinte ob ich in einem anderen Sub (nicht direkt in der Listbox_Click) dann das was ich in der Listbox ausgewählt habe noch einmal abfragen kann.
Wenn ich deine Select Case einfach im anderen Sub einfüge, wird natürlich kein Objekt (ListBox.ListIndex) gefunden. Hast du da eine Idee?
Gruß
Anzeige
AW: Listbox Items abfangen & weiter damit arbeiten
16.05.2018 08:23:12
Mullit
Hallo,
na, da muß doch nur noch das TabBlatt davor...
Option Explicit

Public Sub Deine_Andere_Proc()
Select Case Tabelle1.ListBox1.ListIndex
    Case Is = 0
        Range("A12").Value = "Bankhaus Meier"
    Case Is = 1
        Range("A12").Value = "Bankhaus Sparkasse"
    Case Is = 2
        Range("A12").Value = "Bankhaus Volksbank"
    Case Else
        Range("A12").Value = "Bankhaus Deutsche Bank"
End Select
End Sub

Gruß, Mullit
Anzeige
AW: Listbox Items abfangen & weiter damit arbeiten
16.05.2018 09:30:34
Franz
Hallo Mullit,
danke nochmal für deine Hilfe. Klingt natürlich logisch.
Bei mir wird jedoch immer der Fehler geschmissen
Fehler beim Kompilieren: Methode oder Datenobjekt nicht gefunden
Woran könnte das liegen?
Gruß
AW: Listbox Items abfangen & weiter damit arbeiten
16.05.2018 09:42:13
hary
Moin
Ist die Listbox in einem Tabellenblatt oder einem UserForm?
gruss hary
Anzeige
AW: Listbox Items abfangen & weiter damit arbeiten
16.05.2018 09:44:35
Franz
Hallo Hary,
die Listbox befindet sin in einer UserForm.
Gruß
AW: Listbox Items abfangen & weiter damit arbeiten
16.05.2018 10:07:00
hary
Moin
Erstell im UF einen Button und in das UF diese Codes.
'--mit Button der entspr. eintraegt------
Private Sub CommandButton1_Click()
With Worksheets("Tabelle1") '--- Blattname ggf. anpassen
Select Case ListBox1.ListIndex
Case Is = 0
.Range("A12").Value = "Bankhaus Meier"
Case Is = 1
.Range("A12").Value = "Bankhaus Sparkasse"
Case Is = 2
.Range("A12").Value = "Bankhaus Volksbank"
Case Else
.Range("A12").Value = "Bankhaus Deutsche Bank"
End Select
End With
End Sub
Private Sub UserForm_Initialize()
ListBox1.AddItem "Kunde 1"
ListBox1.AddItem "Kunde 2"
ListBox1.AddItem "Kunde 3"
ListBox1.AddItem "Kunde 4"
End Sub

Anzeige
AW: Listbox Items abfangen & weiter damit arbeiten
16.05.2018 10:37:58
Franz
Hallo Hary,
vielen Dank. Aber ich denke so ganz kann ich das nicht verwenden.
Meine Überlegungen waren jetzt so, dass ich durch Klick auf ein Item in der Listbox eine Auswahl an Tabellenblättern bekomme (alle die mit Ba beginnen werden mir angezeigt). Anschließend gibt es die Möglichkeit ein neues Tabellenblatt zu erstellen (mithilfe eines eingefügten Ribbons als Schaltfläche) Es wird von einem Blatt kopiert & nur ein Bereich wird immer ausgetauscht.
Gibt es keine Möglichkeit, die Auswahl der Userform Listbox Items abzufragen?
Folgender Code funktioniert nicht, wäre aber wünschenswert, da das

Sub mit Ribbon nicht im Userform steht:


Sub BlattErstellen(Blatt As String, Name As String) 'Blatt := Angabe aus Combo Box Blatt in  _
Blatt Neu(gibt Art des zu erstellenden Blattes an); Name:= Name den das Blatt bekommen soll
Dim Sheet As Worksheet
If Blatt = "Neu" Then
Set Sheet = Sheets.Add(After:=Sheets(7)) 'Neues(leeres) Blatt einfügen
ActiveSheet.Unprotect (GetPassword)
Sheets("Kopie").Cells.Copy Sheet.Cells 'Formatierung soll bei allen Vorlagen Blättern  _
gleich sein
'Hier Fallunterscheidung DE/EN
Select Case Tabelle5.ListBox1.ListIndex
Case Is = 0
Range("A12").Value = "Bankhaus Meier"
Case Else
Range("A12").Value = "Bankhaus Sparkasse"
End Select
Else
Set Sheet = Sheets.Add(After:=Sheets(2))
End If
End Sub


Gibts da ne Idee oder eine Möglichkeit?
Gruß
Anzeige
AW: Listbox Items abfangen & weiter damit arbeiten
16.05.2018 10:38:04
Franz
Hallo Hary,
vielen Dank. Aber ich denke so ganz kann ich das nicht verwenden.
Meine Überlegungen waren jetzt so, dass ich durch Klick auf ein Item in der Listbox eine Auswahl an Tabellenblättern bekomme (alle die mit Ba beginnen werden mir angezeigt). Anschließend gibt es die Möglichkeit ein neues Tabellenblatt zu erstellen (mithilfe eines eingefügten Ribbons als Schaltfläche) Es wird von einem Blatt kopiert & nur ein Bereich wird immer ausgetauscht.
Gibt es keine Möglichkeit, die Auswahl der Userform Listbox Items abzufragen?
Folgender Code funktioniert nicht, wäre aber wünschenswert, da das

Sub mit Ribbon nicht im Userform steht:


Sub BlattErstellen(Blatt As String, Name As String) 'Blatt := Angabe aus Combo Box Blatt in  _
Blatt Neu(gibt Art des zu erstellenden Blattes an); Name:= Name den das Blatt bekommen soll
Dim Sheet As Worksheet
If Blatt = "Neu" Then
Set Sheet = Sheets.Add(After:=Sheets(7)) 'Neues(leeres) Blatt einfügen
ActiveSheet.Unprotect (GetPassword)
Sheets("Kopie").Cells.Copy Sheet.Cells 'Formatierung soll bei allen Vorlagen Blättern  _
gleich sein
'Hier Fallunterscheidung DE/EN
Select Case Tabelle5.ListBox1.ListIndex
Case Is = 0
Range("A12").Value = "Bankhaus Meier"
Case Else
Range("A12").Value = "Bankhaus Sparkasse"
End Select
Else
Set Sheet = Sheets.Add(After:=Sheets(2))
End If
End Sub


Gibts da ne Idee oder eine Möglichkeit?
Gruß
Anzeige
AW: Listbox Items abfangen & weiter damit arbeiten
16.05.2018 11:36:42
hary
Moin
Keine Ahnung mit Ribbons :-((
Aber Versuch es mal mit einer Public Variabelen.
Nur diese Zeile in ein Modul
Public auswahl As long
In den Code der Listbox:
Private Sub ListBox1_Change()
auswahl = ListBox1.ListIndex
End Sub
und in deinen Code:

Select Case auswahl
Case Is = 0
Range("A12").Value = "Bankhaus Meier"
Case Is = 1
Range("A12").Value = "Bankhaus Sparkasse"
Case Is = 2
Range("A12").Value = "Bankhaus Volksbank"
Case Is = 3
Range("A12").Value = "Bankhaus Deutsche Bank"
End Select

Ansonsten muss ich passen, sry.
gruss hary
Anzeige
AW: Listbox Items abfangen & weiter damit arbeiten
16.05.2018 14:11:25
Franz
Hallo Hary,
dankeschön! Klappt leider nicht so wie gewollt...ich versuche mich jetzt an deiner Variante mit dem Button oder suche noch nach einer anderen Lösung.
Vielen Dank für deine Mühen.
Gruß
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Listbox Items abfangen und weiterverarbeiten in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Listbox in UserForm erstellen:

    • Öffne den VBA-Editor (Alt + F11).
    • Füge ein UserForm hinzu und platziere eine Listbox (z. B. ListBox1) darauf.
    • Füge einen Button hinzu, um die Auswahl zu verarbeiten.
  2. Listbox mit Items befüllen:

    • Verwende den folgenden Code im UserForm_Initialize-Ereignis:
    Private Sub UserForm_Initialize()
       ListBox1.AddItem "Kunde 1"
       ListBox1.AddItem "Kunde 2"
       ListBox1.AddItem "Kunde 3"
       ListBox1.AddItem "Kunde 4"
    End Sub
  3. Selektion abfragen:

    • Im Click-Event des Buttons kannst du die Auswahl wie folgt abfragen:
    Private Sub CommandButton1_Click()
       Select Case ListBox1.ListIndex
           Case 0
               Range("A12").Value = "Bankhaus Meier"
           Case 1
               Range("A12").Value = "Bankhaus Sparkasse"
           Case 2
               Range("A12").Value = "Bankhaus Volksbank"
           Case Else
               Range("A12").Value = "Bankhaus Deutsche Bank"
       End Select
    End Sub
  4. Wert der Listbox auslesen:

    • Um den ausgewählten Wert in einem anderen Sub zu nutzen, kannst du eine öffentliche Variable definieren:
    Public auswahl As Long
    
    Private Sub ListBox1_Change()
       auswahl = ListBox1.ListIndex
    End Sub
    • Verwende dann auswahl, um den Wert in einem anderen Sub abzufragen.

Häufige Fehler und Lösungen

Fehler: Methode oder Datenobjekt nicht gefunden

  • Überprüfe, ob die Listbox im richtigen Kontext (UserForm oder Arbeitsblatt) angesprochen wird.
  • Achte darauf, den richtigen Tabellennamen zu verwenden, falls du auf eine Listbox in einem Arbeitsblatt zugreifst.

Fehler: Kein Objekt gefunden

  • Stelle sicher, dass die Listbox im richtigen UserForm- oder Arbeitsblattkontext angesprochen wird (z. B. Tabelle1.ListBox1).

Alternative Methoden

  • Verwendung von ComboBox: Anstelle einer Listbox könntest du auch eine ComboBox verwenden, die eine ähnliche Funktionalität bietet, aber auch eine Eingabe durch den Benutzer erlaubt.

  • Direktes Arbeiten mit ListBox.Items: Du kannst auch direkt mit der ListBox.Items-Eigenschaft arbeiten, um dynamisch Items hinzuzufügen oder zu entfernen.


Praktische Beispiele

  1. Erstellen eines neuen Blattes basierend auf der Auswahl:

    Sub BlattErstellen()
       Dim Sheet As Worksheet
       Set Sheet = Sheets.Add(After:=Sheets(Sheets.Count))
       Sheet.Name = ListBox1.Value
    End Sub
  2. Verwendung von ListBox.Value:

    If ListBox1.Value = "Kunde 1" Then
       Range("A12").Value = "Bankhaus Meier"
    End If

Tipps für Profis

  • Nutze With-Anweisungen, um deinen Code leserlicher zu gestalten, wenn du mehrere Eigenschaften eines Objekts ansprechen musst.

  • Überlege, Error Handling-Techniken einzusetzen, um die Fehlerbehandlung zu verbessern und den Code robuster zu gestalten.


FAQ: Häufige Fragen

1. Wie kann ich den Wert der Listbox außerhalb des UserForms abfragen? Um den Wert der UserForm-Listbox auszulesen, definiere eine öffentliche Variable im Modul, um den ausgewählten Index zu speichern und greife dann darauf zu.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, die oben genannten Codes funktionieren in Excel-Versionen, die VBA unterstützen, insbesondere ab Excel 2007.

3. Was muss ich tun, wenn die Listbox leer bleibt? Stelle sicher, dass die Initialisierung der Listbox im UserForm_Initialize-Ereignis korrekt erfolgt und dass das UserForm tatsächlich angezeigt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige