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
Anzeige