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

Listbox mit mehr als 10 Spalten

Forumthread: Listbox mit mehr als 10 Spalten

Listbox mit mehr als 10 Spalten
22.07.2014 15:20:06
Jens

Hallo zusammen,
ich hab mal wieder eine Frage.
Ich fülle mit diesem Makro eine Listbox und musste jetzt feststellen das nach 10 Spalten leider Schluss ist.
Ich bräuchte aber mindestens 25 Spalten. Ist diese möglich und wenn ja wie.

Private Sub ComboBox1_Change()
Dim lz As Long
Dim rngcell As Range
Dim strFirstAddress As String
lz = Sheets("Daten").Cells(Rows.Count, 1).End(xlUp).Row
With Sheets("Daten").Range("P1:P" & lz)
Me.ListBox1.Clear
Set rngcell = .Find(StartUF.ComboBox1.Value, LookIn:=xlValues, LookAt:=xlWhole)
If Not rngcell Is Nothing Then
strFirstAddress = rngcell.Address
Do
If rngcell.Offset(0, 32).Value = ÜbersichtUF.ComboBox1.Value Then
If rngcell.Offset(0, 32).Value = "40" Then
With Me.ListBox1
.ColumnCount = 10
.AddItem
.List(.ListCount - 1, 0) = rngcell.Offset(0, -15).Value
.List(.ListCount - 1, 1) = rngcell.Offset(0, 1).Value
.List(.ListCount - 1, 2) = rngcell.Offset(0, 36).Value
.List(.ListCount - 1, 3) = rngcell.Offset(0, 37).Value
.List(.ListCount - 1, 4) = rngcell.Offset(0, 38).Value
.List(.ListCount - 1, 5) = rngcell.Offset(0, 39).Value
.List(.ListCount - 1, 6) = rngcell.Offset(0, 40).Value
.List(.ListCount - 1, 7) = rngcell.Offset(0, 41).Value
.List(.ListCount - 1, 8) = rngcell.Offset(0, 42).Value
.ColumnWidths = "2cm;1cm;1cm;1cm;1cm;1cm;1cm;1cm;1cm;1cm"
End With
End If
Set rngcell = .FindNext(rngcell)
Loop While Not rngcell Is Nothing And rngcell.Address <> strFirstAddress
End If
End With
End Sub

Ich hoffe ihr könnt mir wie immer helfen.
Vielen Dank im vorraus.
Jens

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox mit mehr als 10 Spalten
22.07.2014 15:23:35
Hajo_Zi
Hallo Jens,
nur gebundene Liste, also Zuweisung des kompletten Bereiches.

AW: Listbox mit mehr als 10 Spalten
22.07.2014 15:30:30
Nepumuk
Hallo,
da liegt Hajo falsch.
Du kannst über die List- oder Columns-Eigenschaft beliebig große Arrays an eine Listbox übergeben. Ich hab zum testen mal eine angelegt mit 50.000 Spalten und 10.000.000 Zeilen, also erheblich mehr als ein komplette Exceltabelle. Dauert zwar ein bisschen bei der Größe aber sonst kein Problem.
Gruß
Nepumuk

Anzeige
AW: Listbox mit mehr als 10 Spalten
22.07.2014 15:32:44
Hajo_Zi
Hallo Nepumuk,
ich vermute mal Du hast das Array komplett zugewiesen, wie ich auch schon geschrieben hatte und nicht jede Spalte einzeln.

AW: Listbox mit mehr als 10 Spalten
22.07.2014 16:53:46
Jens
Danke für die schnellen Antworten.
Nur kann ich mir nicht vor stellen was ich an meinen Makro genau ändern muss.
Die Daten stehen leider nicht alle untereinander und nebeneinander.
Versteh das richtig das es dann nicht funktioniert?

Anzeige
AW: Listbox mit mehr als 10 Spalten
22.07.2014 16:56:51
Hajo_Zi
doch so wie Nepumuk geschrieben hat, schreibe es in ein Array und weise dieses dem Steuerelement zu.
Gruß Hajo

AW: Listbox mit mehr als 10 Spalten
22.07.2014 17:15:33
Daniel
du kannst auch so vorgehen:
filtere die Daten, so dass nur die gewünschen Zeilen sichtbar sind und kopiere dann die werte in ein leeres Blatt (auch nur die erforderlichen Spalten)
dort stehen dann alle Werte, die in die Listbox sollen, als kompakte Tabelle, welche du mit
Listbox1.List = Sheets("Zwischenspeicher").Cells(1,1).CurrentRegion.Value
auf einen Schlag in die Listbox übernehmen kannst
Gruß Daniel

Anzeige
AW: Listbox mit mehr als 10 Spalten
22.07.2014 17:33:38
Jens
Danke noch mal.
Hajo deine Variante klingt relativ einfach.
Nur hab ich keine Ahnung wie ich es anfangen soll.
Könntest du vllt. in mein Makro mal ein Bsp. einfügen wie ich ein Array erstelle.

AW: Listbox mit mehr als 10 Spalten
22.07.2014 19:21:35
Ewald
Hallo,
zum Verständnis mal eine einfache Lösung wie du ein Array füllst und dann übergibst.

Dim Daten(6, 1) 'Array-Variable dimensionieren : 7 Zeilen, 2 Spalten
For z = 0 To 6
Daten(z, 0) = Cells(z + 2, 6) 'Daten aus Spalte F
Daten(z, 1) = Cells(z + 2, 7) 'Daten aus Spalte G
Next
ComboBox1.Clear 'Combobox-Inhalte löschen
ComboBox1.List() = Daten 'Wertte aus Array-Variable zuweisen 
Daten ist das Array und statt Combobox1.List dann Listbox1.List
hoffe das hilft.
Gruß Ewald

Anzeige
AW: Listbox mit mehr als 10 Spalten
22.07.2014 19:28:53
Jens
Danke Ewald,
Das Probier ich aus sieht verständlich aus.
Nur eine Frage müssen Zeilen und Spalten genau feststehen oder kann man diese auch variable gestalten.
Danke für die schnelle Antwort.

AW: Listbox mit mehr als 10 Spalten
23.07.2014 13:50:44
Ewald
Hallo Jens,
das geht auch variabel, du mußt nur vorher die Zeilen zählen in denen deine zwei Kriterien zutreffen.
die Spalten sollen ja fest sein (26)
mit den 2 Werten kannst du dann dein Array dimensionieren
Gruß Ewald

Anzeige
AW: Listbox mit mehr als 10 Spalten
23.07.2014 17:14:02
Jens
Danke Ewald,
für deine Hilfe, hab mein Problem lösen können.
Auch vielen Dank allen anderen die hier immer fleißig mit Rat und Tat helfen.

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Listbox mit mehr als 10 Spalten in Excel


Schritt-für-Schritt-Anleitung

Um eine Listbox in Excel mit mehr als 10 Spalten zu füllen, musst du einige Anpassungen in deinem VBA-Makro vornehmen. Hier sind die Schritte, die du befolgen solltest:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Finde dein Makro: Suche das Makro, das die Listbox füllt.
  3. Ändere die ColumnCount-Eigenschaft: Setze die ColumnCount-Eigenschaft der Listbox auf die gewünschte Anzahl von Spalten (z.B. 25).
  4. Fülle die Listbox: Stelle sicher, dass du die Werte aus einem Array oder einer Datenquelle zuweist, die die nötigen Spalten enthält.

Hier ein Beispiel, wie du das Makro anpassen könntest:

With Me.ListBox1
    .ColumnCount = 25 ' Setze die Spaltenanzahl auf 25
    ' Hier kommen die weiteren Befehle zum Füllen der Listbox
End With

Häufige Fehler und Lösungen

  • Fehler: Listbox zeigt nur 10 Spalten an
    Lösung: Überprüfe, ob die ColumnCount-Eigenschaft korrekt gesetzt ist. Stelle sicher, dass du die Listbox mit einem Array oder einer Datenquelle füllst, die mehr als 10 Spalten enthält.

  • Fehler: Daten werden nicht korrekt angezeigt
    Lösung: Stelle sicher, dass die Daten, die du in die Listbox übergibst, in der richtigen Struktur vorliegen (z.B. als 2D-Array).


Alternative Methoden

Falls du die Listbox nicht direkt mit mehr als 10 Spalten füllen kannst, gibt es alternative Methoden:

  1. Verwende ein Array: Fülle die Daten in ein Array und weise dieses der Listbox zu, anstatt die Werte einzeln hinzuzufügen.

    Dim Daten(0 To 6, 0 To 24) ' 7 Zeilen, 25 Spalten
    ' Fülle das Array mit Daten
    ListBox1.List = Daten
  2. Nutze ein Zwischenspeicherblatt: Filtere die relevanten Daten und kopiere sie in ein leeres Blatt. Übernehme dann die Werte mit:

    ListBox1.List = Sheets("Zwischenspeicher").Cells(1, 1).CurrentRegion.Value

Praktische Beispiele

Hier sind einige Beispiele, wie du die Listbox effektiv nutzen kannst:

  • Beispiel mit einem Array:

    Dim Daten(0 To 6, 0 To 24) ' Array mit 7 Zeilen und 25 Spalten
    For z = 0 To 6
        For sp = 0 To 24
            Daten(z, sp) = Sheets("Daten").Cells(z + 1, sp + 1).Value
        Next sp
    Next z
    ListBox1.List = Daten
  • Beispiel mit einem Zwischenspeicherblatt: Fülle die Listbox mit gefilterten Daten:

    ListBox1.List = Sheets("Zwischenspeicher").Range("A1:Y100").Value ' Angenommen, A1:Y100 enthält die Daten

Tipps für Profis

  • Datenstruktur beachten: Stelle sicher, dass deine Daten gut strukturiert sind, um Fehler beim Füllen der Listbox zu vermeiden.
  • Array-Dimensionierung: Du kannst die Dimensionen deines Arrays dynamisch setzen, indem du die Anzahl der relevanten Zeilen und Spalten vorab zählst.
  • Leistungsoptimierung: Bei großen Datenmengen kann das Arbeiten mit Arrays die Leistung erheblich verbessern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Listbox immer die aktuellen Daten anzeigt?
Du solltest die Listbox jedes Mal leeren und neu füllen, wenn neue Daten verfügbar sind. Verwende ListBox1.Clear, bevor du die neuen Daten hinzufügst.

2. Kann ich Daten aus mehreren Blättern in die Listbox übernehmen?
Ja, du kannst Daten aus verschiedenen Blättern in ein Array laden und dieses dann der Listbox zuweisen.

3. Welche Excel-Version benötige ich für diese Methoden?
Die beschriebenen Methoden funktionieren in den meisten modernen Excel-Versionen, einschließlich Excel 2010 bis 2021 sowie Excel für Microsoft 365.

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