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

Listboxen als Variable ansprechen?

Forumthread: Listboxen als Variable ansprechen?

Listboxen als Variable ansprechen?
09.12.2015 13:28:33
Tobias
Hallo!
Ich möchte meine Listboxen über Variablen ansprechen, damit ich die mit einer For-Schleife durchlaufen kann.
Im Anschluss soll er die Sachen von den Inhalt von der einen in die andere Listbox kopieren (Das funktioniert ohne Variablen schon einwandfrei bei mir)
Meine Listboxen heißen:
ListBox0
ListBox1
ListBox2
ListBox3
..
Dim L1
Dim L2
Dim f, x, c, z
c = ComboBox.listCount
For f = c To 0 - 1
L1 = "ListBox" & c
z = c - 1
L2 = "ListBox" & z
L1.Clear
For x = 0 To L1.listCount - 1
L1.AddItem L2.List(x)
Next x
L2.Clear
Next f
So habe ich es bisher versucht, klappt nur leider nicht..
Jetzt stellt sich die Frage, ist das überhaupt so möglich?
Ich habe die Variablen etc alles nur zum testen so deklariert, ist dementsprechend noch ein wenig unübersichtlich.
Freue mich auf Hilfe.
Gruß,
Tobias

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Listboxen auf Userform oder Tabelle? owT
09.12.2015 13:57:53
Rudi

AW: Listboxen auf Userform oder Tabelle? owT
09.12.2015 15:04:28
Tobias
Hallo die Listboxen befinden sich auf einer Userform.
Gruß,
Tobias

AW: Listboxen auf Userform oder Tabelle? owT
09.12.2015 15:07:06
Daniel
dann kannst du die Steuerelemente mit Hilfe von Controls über eine Variable ansprechen, bspw für Listbox1:
x = "Listbox"
i = 1
Controls(x & i)
gruß Daniel

Anzeige
AW: Listboxen auf Userform oder Tabelle? owT
09.12.2015 15:31:51
Tobias
Hallo Daniel,
ich habe meinen Code jetzt so angepasst:
c = comboBox.listCount
For f = c To 0 - 1
List = "ListBox"
z = c - 1
Controls(List & c).Clear
For x = 0 To Controls(List & c).listCount - 1
Controls(List & c).AddItem Controls(List & z).List(x)
Next x
Controls(List & c).Clear
Next f
Allerdings passiert leider überhaupt nichts.
-> Kurz zum Sinn und Zwecks des Programms:
Ich habe eine Combobox in der die Einträge jeweils mit einer Listbox verbunden sind, sprich wenn ich in der Combobox Index(0) auswähle wird Listbox(0) eingeblendet und alle anderen Listenboxen ausgeblendet. Wenn Combobox Index(1) dann das gleiche mit Listbox(1) und so weiter.
Jetzt kann ich aber Werte zur Combobox hinzufügen diese sich alphabetisch einfügen und dadurch dann die ursprünglichen Zusammenhänge der Listindex und Comboindex durcheinanderwürfeln.
Wenn ich jetzt zum Beispiel "A" in die Combobox einfüge, steht dieser Wert in der Comboboxindex(0) und mit dem Index wird immer zeitgleich die Listbox (0) angezeigt, das ist dann aber eigentlich die Listbox für den ursprünglichen Index(0) der jetzt nach (1) verrutscht ist.
Wie löse ich das am besten?
Ich habe mir halt gedacht das alle Werte in der Listbox einfach eine Listbox nach unten rutschen, je nachdem in welche Position der neue Wert in der Combobox gerutscht ist, von diesem Punkt dann.
Leider klappt das wie gesagt mit dem Code da oben nicht.
Gruß,
Tobias

Anzeige
AW: Listboxen auf Userform oder Tabelle? owT
09.12.2015 15:41:14
Daniel
Hi
wenn gar nichts passiert, dann wird der Code vielleicht gar nicht ausgeführt und ist u.U. falsch platziert oder einem falschen Event zugeordnet.
leider verstehe ich nicht, was du da machen willst, und kann mir das ohne die Datei dazu zu kennen nicht so richtig vorstellen.
Gruß Daniel
Anzeige
;
Anzeige

Infobox / Tutorial

Listboxen in Excel über Variablen ansprechen


Schritt-für-Schritt-Anleitung

Um Listboxen über Variablen in Excel VBA anzusprechen, kannst Du die folgenden Schritte befolgen. Diese Anleitung ist für Excel 2010 und spätere Versionen geeignet.

  1. Erstelle eine Userform mit mehreren Listboxen, z.B. ListBox0, ListBox1, ListBox2, ListBox3.

  2. Füge eine ComboBox hinzu, um die Auswahl zu treffen, welche Listbox aktiv sein soll.

  3. Öffne den VBA-Editor (ALT + F11) und wähle Deine Userform aus.

  4. Füge den folgenden VBA-Code ein:

    Dim L1 As ListBox
    Dim L2 As ListBox
    Dim f As Integer, x As Integer, c As Integer, z As Integer
    c = ComboBox1.ListCount
    
    For f = c To 1 Step -1
       Set L1 = Controls("ListBox" & c)
       z = c - 1
       Set L2 = Controls("ListBox" & z)
       L1.Clear
       For x = 0 To L2.ListCount - 1
           L1.AddItem L2.List(x)
       Next x
       L2.Clear
    Next f
  5. Teste den Code, um sicherzustellen, dass die Listboxen korrekt angesprochen werden.


Häufige Fehler und Lösungen

  • Fehler: Nichts passiert beim Ausführen des Codes.
    Lösung: Stelle sicher, dass der Code in einem geeigneten Ereignis (z.B. bei der Auswahl in der ComboBox) platziert ist.

  • Fehler: Index-Fehler in der Listbox.
    Lösung: Überprüfe, ob die Listboxen die korrekten Werte enthalten. Möglicherweise musst Du die Indizes anpassen.

  • Fehler: Kompilierungsfehler.
    Lösung: Stelle sicher, dass alle Variablen korrekt deklariert sind und dass die Listboxen existieren.


Alternative Methoden

Eine alternative Methode, um mit Listboxen in VBA zu arbeiten, ist die Verwendung von Arrays. Du kannst die Werte zuerst in ein Array laden und dann die Listboxen füllen. Hier ist ein Beispiel:

Dim values() As String
values = Split("Wert1,Wert2,Wert3", ",")

For i = LBound(values) To UBound(values)
    ListBox1.AddItem values(i)
Next i

Diese Methode ist besonders nützlich, wenn Du mehrere Werte gleichzeitig hinzufügen möchtest.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du eine ComboBox mit Listboxen verbinden kannst:

  1. Erstelle eine ComboBox und zwei Listboxen.
  2. Verwende den folgenden Code:

    Private Sub ComboBox1_Change()
       Dim selectedIndex As Integer
       selectedIndex = ComboBox1.ListIndex
       ListBox1.Visible = (selectedIndex = 0)
       ListBox2.Visible = (selectedIndex = 1)
    End Sub

In diesem Beispiel wird die sichtbare Listbox basierend auf der Auswahl in der ComboBox geändert.


Tipps für Profis

  • Verwende With...End With, um den Code zu optimieren und die Lesbarkeit zu erhöhen:

    With Controls("ListBox" & c)
      .Clear
      For x = 0 To Controls("ListBox" & z).ListCount - 1
          .AddItem Controls("ListBox" & z).List(x)
      Next x
    End With
  • Nutze Select Case, um verschiedene Auswahlmöglichkeiten in der ComboBox effizient zu handhaben.


FAQ: Häufige Fragen

1. Frage
Wie kann ich sicherstellen, dass die Listboxen korrekt angezeigt werden?
Antwort: Überprüfe die Sichtbarkeit der Listboxen und stelle sicher, dass die Indizes korrekt zugeordnet sind.

2. Frage
Kann ich eine Listbox auch in einer Tabelle ansprechen?
Antwort: Ja, Du kannst Listboxen in einer Userform oder in einem Arbeitsblatt ansprechen. Der Code muss jedoch entsprechend angepasst werden.

3. Frage
Was tun, wenn die Listboxen nicht die richtigen Daten anzeigen?
Antwort: Stelle sicher, dass die Daten in der ComboBox und den Listboxen synchronisiert sind und dass der Code die richtigen Indizes verwendet.

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