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

Forumthread: ListBox - RowSource festlegen

ListBox - RowSource festlegen
20.12.2016 12:07:15
Bence
Hallo zusammen,
habe hier folgenden Code:

If UserForm1.CheckBox1.Value = True Then
UserForm2.ListBox1.RowSource = "Berechnung!I1:N5"
Else: UserForm2.ListBox1.RowSource = "Berechnung!A1:F4"
End If

Grundsätzlich läuft das auch, aber das Tabellenblatt wird nicht beachtet. D.h. der Wechsel von I1:N5 zu A1:F4 wird vollzogen, aber es wird immer das aktuell geöffnete Tabellenblatt dafür genommen, nicht Berechnung!
Gibt es dafür eine Erklärung?
Danke sehr im Voraus
Grüße
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox - RowSource festlegen
20.12.2016 13:22:50
Rudi
Hallo,
besser mit .List
If UserForm1.CheckBox1.Value = True Then
UserForm2.ListBox1.List = Sheets("Berechnung").Range("I1:N5").Value
Else
UserForm2.ListBox1.List = Sheets("Berechnung").Range("A1:F4").Value
End If
Gruß
Rudi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

ListBox RowSource in Excel VBA richtig festlegen


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Füge eine UserForm in deinem Excel VBA-Projekt hinzu, falls du noch keine hast.
  2. ListBox hinzufügen: Ziehe eine ListBox (z.B. ListBox1) auf die UserForm.
  3. CheckBox hinzufügen: Füge eine CheckBox (z.B. CheckBox1) zur UserForm hinzu, um zwischen verschiedenen Datenquellen zu wechseln.
  4. Code für die ListBox-Quelle: Verwende den folgenden Code, um die RowSource dynamisch festzulegen:
If UserForm1.CheckBox1.Value = True Then
    UserForm2.ListBox1.List = Sheets("Berechnung").Range("I1:N5").Value
Else
    UserForm2.ListBox1.List = Sheets("Berechnung").Range("A1:F4").Value
End If
  1. UserForm anzeigen: Stelle sicher, dass du die UserForm korrekt aufrufst, damit die ListBox sichtbar wird.

Häufige Fehler und Lösungen

  • Tabellenblatt wird ignoriert: Wenn der Code nicht das richtige Tabellenblatt verwendet, stelle sicher, dass du den Namen des Tabellenblatts korrekt schreibst. Achte auf Groß- und Kleinschreibung.
  • ListBox bleibt leer: Überprüfe, ob die angegebenen Zellbereiche tatsächlich Werte enthalten. Nutze die Debug.Print-Anweisung, um sicherzustellen, dass die Werte korrekt abgerufen werden.
  • Fehlermeldungen: Bei Fehlern, die auf ListBox1.RowSource hinweisen, versuche, die List-Eigenschaft wie oben beschrieben zu verwenden.

Alternative Methoden

Falls die RowSource-Methode nicht die gewünschte Flexibilität bietet, kannst du alternativ die List-Eigenschaft verwenden, um die ListBox direkt mit Werten zu füllen. Diese Methode ist oft effektiver, da sie weniger anfällig für Probleme mit dem aktuellen Tabellenblatt ist.

UserForm2.ListBox1.List = Sheets("Berechnung").Range("A1:F4").Value

Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, die RowSource korrekt zu nutzen:

  • Dynamische Datenquelle: Du könntest den Code so anpassen, dass verschiedene Bereiche ausgewählt werden, je nachdem, welche Option in der CheckBox gewählt wurde.
  • Verschiedene Tabellenblätter: Wenn du Daten aus mehreren Tabellenblättern verwenden möchtest, kannst du die Sheets()-Funktion entsprechend anpassen.
If UserForm1.CheckBox1.Value = True Then
    UserForm2.ListBox1.List = Sheets("Tabelle2").Range("B1:B10").Value
Else
    UserForm2.ListBox1.List = Sheets("Tabelle3").Range("C1:C10").Value
End If

Tipps für Profis

  • Verwende Named Ranges: Anstatt feste Zellbereiche zu verwenden, kannst du benannte Bereiche (Named Ranges) nutzen. Das macht deinen Code flexibler und leichter zu warten.
  • Fehlerbehandlung: Implementiere einfache Fehlerbehandlungsroutinen, um unerwartete Fehler abzufangen. Du könntest zum Beispiel sicherstellen, dass das angegebene Tabellenblatt existiert:
On Error Resume Next
Dim ws As Worksheet
Set ws = Sheets("Berechnung")
If ws Is Nothing Then
    MsgBox "Das Tabellenblatt 'Berechnung' existiert nicht."
    Exit Sub
End If
On Error GoTo 0

FAQ: Häufige Fragen

1. Warum funktioniert ListBox1.RowSource nicht wie erwartet?
Die RowSource-Eigenschaft ist an das aktuell aktive Tabellenblatt gebunden. Verwende stattdessen die List-Eigenschaft, um spezifische Daten aus einem bestimmten Tabellenblatt zu laden.

2. Kann ich die ListBox mit dynamischen Daten füllen?
Ja, wenn du die List-Eigenschaft verwendest, kannst du auch dynamische Bereiche oder Arrays verwenden, um die ListBox zu füllen.

3. Wie kann ich mehrere Spalten in einer ListBox anzeigen?
Setze die ColumnCount-Eigenschaft der ListBox im Designer auf die gewünschte Anzahl und stelle sicher, dass der Datenbereich entsprechend formatiert ist, um mehrere Spalten zu enthalten.

4. Welche Excel-Version benötige ich für diese Funktionen?
Die beschriebenen Funktionen sind in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010, 2013, 2016 und höher.

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