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

Listbox durch Variable ansprechen

Forumthread: Listbox durch Variable ansprechen

Listbox durch Variable ansprechen
30.06.2004 11:51:25
Tim
Hallo,
ich habe ein Excel-Sheet mit mehreren Listboxen. Zu jeder Listbox habe ich einen Button, mit dem ich den angewählten Eintrag der zugehörigen Listbox löschen möchte. Der Übersichtlichkeit halber will ich aber nicht zu jedem Button den gleichen (langen) Code schreiben, sondern eine Funktion aufrufen, die die entsprechende Listbox auswählt und den Eintrag löscht.
Hier mein Code:

Private Sub but_del_prob_kommunizieren_Click()
del_listbox ("lb_prob_kommunizieren")
End Sub

'--------------------
'--------------------
Function del_listbox(boxname As String)
If boxname.ListIndex >= 0 Then
boxname.RemoveItem (boxname.ListIndex)
Else: MsgBox ("Bitte selektieren Sie zuerst den zu entfernenden Eintrag!")
End If
End Function
Leider funktioniert das aber nicht. Es kommt jedes Mal die Meldung "Fehler: Ungültiger Bezeichner" und die Zeile der Funktionseinleitung wird markiert (Function del_listbox(boxname As String).
Wenn ich die Variable boxname durch den Namen der Listbox (z.B. lb_prob_kommunizieren) austausche, klappt alles wunderbar.
Ich hoffe, mir kann jemand bei dem Problem helfen.
Danke im Vorraus!
Tim
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Listbox durch Variable ansprechen
30.06.2004 12:04:11
kdosi
Hallo Tim, versuch es so :

Private Sub but_del_prob_kommunizieren_Click()
del_listbox (lb_prob_kommunizieren)
End Sub

'--------------------
'--------------------
Function del_listbox(lstListBox As Variant)
If lstListBox.ListIndex >= 0 Then
lstListBox.RemoveItem (lstListBox.ListIndex)
Else
MsgBox ("Bitte selektieren Sie zuerst den zu entfernenden Eintrag!")
End If
End Function
Anzeige
AW: Listbox durch Variable ansprechen
Tim
Hallo,
danke für die schnelle Antwort. Leider erhalte ich aber bei deinem Vorschlag die Meldung "Objekt erforderlich". If lstListBox.ListIndex &gt= 0 Then wird dabei markiert.
Tim
AW: Listbox durch Variable ansprechen
Tim
Ich habe mal überall, wo die Listboxen angesprochen werden explizit auf das Sheet "Formular" gewiesen.
Der neue Code ist:

Private Sub but_del_prob_kommunizieren_Click()
del_listbox (lb_prob_kommunizieren)
End Sub

'------------------
'------------------
Function del_listbox(lstListBox As Variant)
If Worksheets("Formular").lstListBox.ListIndex >= 0 Then
Worksheets("Formular").lstListBox.RemoveItem (lstListBox.ListIndex)
Else: MsgBox ("Bitte selektieren Sie zuerst den zu entfernenden Eintrag!")
End If
End Function
Jetzt kommt die Fehlermeldung "Objekt unterstützt die Eigenschaft oder Methode nicht" und wieder wird die If-Anweisung gehilighted ?!!
Tim
Anzeige
AW: Listbox durch Variable ansprechen
Tim
Super, es klappt!
Danke für das Beispiel!
Mfg
Tim
;
Anzeige

Infobox / Tutorial

Listbox mit Variablen ansprechen und Einträge löschen


Schritt-für-Schritt-Anleitung

  1. Erstelle eine UserForm:

    • Füge eine UserForm in deinem Excel-Projekt hinzu.
    • Platziere eine Listbox und einen Button auf der Form.
  2. Benennen der Listbox:

    • Nenne die Listbox zum Beispiel lb_prob_kommunizieren.
  3. Schreibe den Button-Code:

    • Füge folgenden Code in das Click-Ereignis des Buttons ein:
    Private Sub but_del_prob_kommunizieren_Click()
       del_listbox (lb_prob_kommunizieren)
    End Sub
  4. Erstelle die Funktion zum Löschen:

    • Definiere eine Funktion, um den ausgewählten Eintrag der Listbox zu löschen:
    Function del_listbox(lstListBox As Variant)
       If lstListBox.ListIndex >= 0 Then
           lstListBox.RemoveItem (lstListBox.ListIndex)
       Else
           MsgBox ("Bitte selektieren Sie zuerst den zu entfernenden Eintrag!")
       End If
    End Function
  5. Testen der Funktion:

    • Teste den Code, indem du einen Eintrag in der Listbox auswählst und den Button drückst.

Häufige Fehler und Lösungen

  • Fehler: Ungültiger Bezeichner

    • Lösung: Stelle sicher, dass du die Listbox korrekt übergeben hast. Statt mit einem String zu arbeiten, übergebe das Listbox-Objekt direkt.
  • Fehler: Objekt erforderlich

    • Lösung: Achte darauf, dass du die Listbox als Variant übergibst. Verwende die Syntax del_listbox (lb_prob_kommunizieren).
  • Fehler: Objekt unterstützt die Eigenschaft oder Methode nicht

    • Lösung: Vergewissere dich, dass du auf die Listbox im richtigen Kontext zugreifst. Füge beispielsweise Worksheets("Formular"). vor der Listbox hinzu, wenn sie sich auf einem bestimmten Blatt befindet.

Alternative Methoden

  • Direkter Zugriff auf Listbox:

    • Statt eine Funktion zu nutzen, kannst du den Löschvorgang direkt im Button-Click-Ereignis durchführen, indem du die Logik direkt dort schreibst.
  • Verwendung von Arrays:

    • Du kannst die Einträge einer Listbox in einem Array speichern und die Löschoperation auf dem Array durchführen, bevor du die Listbox aktualisierst.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du mehrere Listboxen mit einem Button verwalten kannst:

Private Sub but_del_all_Click()
    del_listbox (lb_first)
    del_listbox (lb_second)
End Sub

Function del_listbox(lstListBox As Variant)
    If lstListBox.ListIndex >= 0 Then
        lstListBox.RemoveItem (lstListBox.ListIndex)
    Else
        MsgBox ("Bitte selektieren Sie zuerst den zu entfernenden Eintrag!")
    End If
End Function

In diesem Beispiel wird die Funktion del_listbox für mehrere Listboxen aufgerufen, um die ausgewählten Einträge zu löschen.


Tipps für Profis

  • Fehlerbehandlung:

    • Implementiere eine Fehlerbehandlung in deiner Funktion, um unerwartete Fehler abzufangen und eine benutzerfreundliche Nachricht anzuzeigen.
  • Optimierung des Codes:

    • Reduziere Wiederholungen, indem du die Logik für das Löschen von Einträgen in eine generische Funktion auslagerst, die für alle Listboxen verwendet werden kann.
  • Verwendung von Enum:

    • Definiere Enum-Werte für die verschiedenen Listboxen, um den Code lesbarer und wartungsfreundlicher zu gestalten.

FAQ: Häufige Fragen

1. Warum funktioniert mein Code nicht? Stelle sicher, dass du die Listbox korrekt übergibst und dass der Name der Listbox stimmt.

2. Wie kann ich mehrere Listboxen gleichzeitig ansprechen? Du kannst eine Schleife verwenden, um durch alle Listboxen zu iterieren und die Löschfunktion für jede aufzurufen.

3. Was mache ich, wenn ich eine zusätzliche Funktion benötige? Du kannst einfach eine weitere Funktion erstellen, die spezifische Aufgaben übernimmt, und diese innerhalb deiner Button-Click-Ereignisse aufrufen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige