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

Forumthread: Listbox - RowSource

Listbox - RowSource
04.12.2007 10:45:00
Gerhard
Moin Moin
Folgende Frage:
Habe eine Listbox in die mit folgendem Code mit Autofilter gefilterte Daten übergeben werden (Danke Hajo!)

Private Sub UserForm_Initialize()
Dim Zeile As Long
Dim I As Long
Dim letzte As Long
With ActiveSheet
ListBox1.ColumnCount = 3
letzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
Zeile = 0
For I = 1 To letzte
If Rows(I).EntireRow.Hidden = False Then
ListBox1.AddItem .Cells(I, 1)
ListBox1.List(Zeile, 1) = .Cells(I, 2)
ListBox1.List(Zeile, 2) = .Cells(I, 3)
Zeile = Zeile + 1
End If
Next I
End With
End Sub


Soweit funtionert das alles. Allerdings habe ich mehr als 10 Spalten zum Anzeigen. Über die Suche habe ich rausgefunden, das ich die gefilterten Daten in ein extra Sheet schreiben muss (welches auch ausgeblendet sein kann) und mit der Zeile
ListBox1.RowSource = "HILFSTABELLE_SUCHE!A1:Z1000"
auslesen muss. Und hier ist mein Problem. Wie bekomme ich diese gefilterten Daten in die HILFSTABELLE_SUCHE?
Zu dem Autofilter: Dieser wird über ein UF gesetzt, da das Sheet für den User nicht sichtbar sein soll. Auch läuft es bei dieser Suche mehr über eine "Eingrenzung"
Filter 1 = Artikelbezeichnung, (Auswahl über ComboBox)
Filter 2 = Artikelgrösse (in Abhängigkeit von Artikelbezeichung, ebenfalls Auswahl über ComboBox)
...
usw.
Später soll dann bei klick auf einen Datensatz in der Listbox, dieser in eine UF mit Textboxen übergeben werden.
Wenn ich das ja nun richtig verstehe müssen ja die Eintragungen in HILFSTABELLE_SUCHE bei jeder neuen Auswahl aktualisiert werden und ebenfalls in der Listbox.
Ist das überhaupt möglich und wenn ja, wie muss ich dabei vorgehen?
Thx für die Hilfe, und Nein es soll keine "Auftragsarbeit" sein.
LG Gerhard

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox - RowSource
04.12.2007 11:12:32
Renee
Hi Gerhard,
Die Anzahl Spalten in einer Listbox ist auf 10 (0-9) beschränkt. Diese Beschränkung kann nicht aufgehoben werden!
GreetZ Renee

AW: Listbox - RowSource
04.12.2007 11:19:00
Hajo_Zi
Hallo Renee,
das gilt nur bei Zuweisung mittels AddItem. Bei gebundenen Listen ist es nicht auf 10 begrenzt.

Anzeige
AW: Listbox - RowSource
04.12.2007 11:21:00
Gerhard
Moin Hajo...
Kannst du mir kurz erklären was der Unterscheid zwischen gebunden und ungebundenen Listboxen ist? Dann versteh ich vllt auch *ziemlichverwirrtgeradebin*
Greetz

AW: Listbox - RowSource
04.12.2007 11:45:58
Hajo_Zi
Hallo Gerhard,
bei ungebunden wird jeder Wert mit AddÍtem zugewiesen. Bei gebunden ein Bereich.
Gruß Hajo

Anzeige
10 gilt nur für ungebundene Listen...
04.12.2007 11:51:00
Renee
Hajo hat natürlich wieder mal recht.
Ungebunden heisst: Die Werte der Listbox werden 'in der Listbox' selber gespeichert. Sprich sie sind nicht an eine Datenquelle gebunden und werden mit der .AddItem Methode der Listbox zugefügt.Hier gilt die Beschränkung auf 10 Spalten!
Gebunden heisst: Die Werte der Listbox sind an eine Datenquelle, bzw. in Excel an eine Range gebunden. D.h. jede Veränderung der Datenquelle, verändert auch die Listbox, bzw. triggert dort einen Listbox_Change Event. Der Wertebereich wird in der .RowSource Eigenschaft gesetzt. Hier gilt die Beschränkung der Anzahl Spalten nicht.
GreetZ Renee

Anzeige
AW: 10 gilt nur für ungebundene Listen...
04.12.2007 12:00:00
Gerhard
Aja... jetzt wird wieder Licht m Dunkeln ;)
So und jetzt habe ich wieder ein Problem... *lach*
Wie zum Teufel stelle ich das jetzt an das diese Listbox mir die Daten aus Sheet HILFSTABELLE_SUCHE anzeigt?
Überschrift Zeile 1 bis Spalte 15
Daten Zeile 2 bis 500
Ich finde über die Suche nix... bzw. das was ich finde kapier i ned...
LG

Anzeige
AW: 10 gilt nur für ungebundene Listen...
04.12.2007 13:18:00
Renee
Hi Gerhard,
Schreibe in die Userform_Initialize Routine:

ListBox1.RowSource = "HILFSTABELLE_SUCHE!A2:O500"
ListBox1.ColumnCount = 15
ListBox1.ColumnHeads = True


GreetZ Renee

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Listbox und RowSource in Excel VBA richtig nutzen


Schritt-für-Schritt-Anleitung

Um eine Listbox in einer Excel Userform mit Daten aus einer Tabelle zu befüllen, kannst du den folgenden VBA-Code verwenden. In diesem Beispiel wird die RowSource der Listbox gesetzt, um gefilterte Daten anzuzeigen:

  1. Öffne den VBA-Editor (ALT + F11).

  2. Füge eine Userform hinzu und platziere eine Listbox (z.B. ListBox1) darauf.

  3. Füge den folgenden Code in die UserForm_Initialize-Routine ein:

    Private Sub UserForm_Initialize()
       ListBox1.RowSource = "HILFSTABELLE_SUCHE!A2:O500"
       ListBox1.ColumnCount = 15
       ListBox1.ColumnHeads = True
    End Sub
  4. Stelle sicher, dass die Daten in der angegebenen Range (HILFSTABELLE_SUCHE!A2:O500) vorhanden sind.

  5. Teste die Userform, um die Listbox mit den Daten anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: "Die Anzahl der Spalten ist auf 10 beschränkt."

    • Lösung: Achte darauf, dass du die Listbox als gebundene Listbox verwendest, indem du die RowSource-Eigenschaft setzt. Die Begrenzung auf 10 Spalten gilt nur für ungebundene Listboxen, die mit AddItem gefüllt werden.
  • Fehler: "ListBox zeigt keine Daten an."

    • Lösung: Überprüfe, ob die Range in der RowSource korrekt ist und ob die Daten tatsächlich vorhanden sind. Achte auch darauf, dass der Tabellenname korrekt geschrieben ist.

Alternative Methoden

Es gibt verschiedene Methoden, um eine Listbox in Excel mit Daten zu füllen:

  • Mit AddItem: Du kannst die Listbox auch mit der AddItem-Methode füllen. Beachte jedoch, dass hier die Spaltenanzahl auf 10 beschränkt ist.

    Private Sub UserForm_Initialize()
      Dim I As Long
      For I = 1 To 10 ' Beispiel für 10 Items
          ListBox1.AddItem "Item " & I
      Next I
    End Sub
  • Daten aus einer ComboBox: Du kannst auch eine ComboBox nutzen, um spezifische Daten auszuwählen und diese dann in der Listbox anzuzeigen.


Praktische Beispiele

Hier ist ein Beispiel, wie du eine Listbox in Verbindung mit einer ComboBox nutzen kannst, um gefilterte Daten anzuzeigen:

Private Sub ComboBox1_Change()
    Dim filterValue As String
    filterValue = ComboBox1.Value
    ' Filtere die Daten hier und aktualisiere die RowSource
    ListBox1.RowSource = "HILFSTABELLE_SUCHE!A2:O500" ' Beispiel
End Sub

Achte darauf, dass du die RowSource anpasst, wenn sich die Auswahl in der ComboBox ändert.


Tipps für Profis

  • Verwende die ListBox1.List-Eigenschaft, um gezielt auf die Daten in der Listbox zuzugreifen und sie zu manipulieren.
  • Denke daran, dass die RowSource-Methode eine dynamische Verbindung zur Datenquelle herstellt. Jede Änderung in der Datenquelle wird direkt in der Listbox reflektiert.
  • Nutze den ListBox_Change-Event, um Aktionen durchzuführen, wenn der Benutzer einen Eintrag auswählt.

FAQ: Häufige Fragen

1. Wie viele Spalten kann ich in einer Listbox haben? Die Anzahl der Spalten ist auf 10 beschränkt, wenn du die Listbox ungebunden verwendest. Bei gebundenen Listboxen ist diese Beschränkung nicht vorhanden.

2. Wie kann ich die Daten in der Listbox filtern? Du kannst die Daten in der RowSource dynamisch anpassen, basierend auf den Eingaben in anderen Steuerelementen wie ComboBoxen.

3. Was ist der Unterschied zwischen gebundenen und ungebundenen Listboxen? Eine ungebundene Listbox speichert die Werte selbst und verwendet die AddItem-Methode, während eine gebundene Listbox an eine Datenquelle gebunden ist und die RowSource-Eigenschaft verwendet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige