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

Forumthread: Listbox mit Array füllen

Listbox mit Array füllen
andreas
Hallo Excelgemeinde,
ich komme einfach nicht weiter. Bisher habe ich mit dem u. g. Code eine Listbox in einer Userform (Excel-VBA) aus einer AccessDB befüllt. Jetzt musste ich feststellen, dass bei DBs mit mehr als 10 Spalten der Code nicht mehr funktioniert. Als Lösung hat Google Arrays ausgespuckt.
Nur kriege ich das einfach nicht auf die Reihe! Kann mir bitte jemand mit einem Beispielcode auf die Sprünge helfen.
Danke für eure Hilfe.
Viele Grüße
andreas
Dim i As Integer
rst.Open "SELECT [Code], [Country] FROM tblISOCOuntryCodes ORDER BY [Country];", _
cnn, adOpenStatic
rst.MoveFirst
i = 0
With Me.ListBox1
.Clear
Do
.AddItem
.List(i, 0) = rst![Code]
.List(i, 1) = rst![Country]
i = i + 1
rst.MoveNext
Loop Until rst.EOF
End With
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Listbox mit Array füllen
10.01.2011 19:48:22
Beverly
Hi Andreas,
wenn du Add.Item verwendest, kannst du nicht mehr als 10 Spalten füllen - das geht nur, wenn du einen Bereich zuweist.


AW: Listbox mit Array füllen
10.01.2011 21:15:20
andreas
Bereich zuweisen? Wie?
andreas
Anzeige
AW: Listbox mit Array füllen
10.01.2011 21:58:26
Beverly
Hi Andreas,
wie du das Array aus der AccessDB heraus befüllst, weiß ich nicht, aber das Array kannst du der ListBox wie folgt zuweisen:
ListBox1.List = DeinArray



Anzeige
AW: Listbox mit Array füllen
11.01.2011 19:56:17
andreas
Warum funktioniert .AddItem nicht mit mehr als 10 Spalten?!? Es könnte so schön sein!
Mit den Arrays komme ich einfach nicht weiter! Hat keiner ein Lösung/Beispiel o. ä.?
Ich mach' jetzt lieber die Kiste aus und nen Bier auf.
Und tschüß
andreas
AW: Listbox mit Array füllen
11.01.2011 21:27:17
Beverly
Hi Andreas,
vielleicht kannst du ja die Daten direkt aus Access in die Excel-Tabelle importieren - Register: Daten -&gt Befehlsgruppe: Externe Daten Abrufen -&gt Schalter: Access. Dann benötigst du auch kein Array, sondern kannst den betreffenden importierten Bereich direkt an die ListBox übergeben - z.B.
    ListBox1.RowSource = "Tabelle1!A1:K50"


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Listbox mit Array füllen in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Listbox in einer Userform mit einem Array zu füllen, kannst du die folgenden Schritte befolgen:

  1. Definiere dein Array: Zuerst musst du ein Array erstellen und mit den gewünschten Werten füllen.

    Dim DeinArray() As Variant
    DeinArray = Range("A1:B10").Value ' Angenommen, die Daten sind in den Zellen A1 bis B10
  2. Fülle die Listbox: Übergebe das Array an die Listbox. Dies geschieht mit der List-Eigenschaft.

    ListBox1.List = DeinArray
  3. Korrekte Dimensionierung: Stelle sicher, dass das Array die richtige Dimension hat, um die Listbox korrekt zu füllen.


Häufige Fehler und Lösungen

  • Problem: AddItem funktioniert nicht mit mehr als 10 Spalten.

    • Lösung: Verwende die List-Eigenschaft, um das gesamte Array auf einmal zu übergeben.
  • Problem: Die Listbox bleibt leer.

    • Lösung: Überprüfe, ob das Array korrekt gefüllt ist und die Dimensionen stimmen.

Alternative Methoden

Eine alternative Methode, um eine Listbox zu füllen, besteht darin, die Daten direkt aus einer Datenbank zu importieren. Zum Beispiel kannst du die Daten von Access direkt in Excel importieren und dann die RowSource-Eigenschaft verwenden:

ListBox1.RowSource = "Tabelle1!A1:K50"

Dies erspart dir das manuelle Füllen eines Arrays und ist besonders nützlich, wenn du mit großen Datenmengen arbeitest.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du ein VBA-Array mit Daten aus einer Access-Datenbank füllen und in eine Listbox übergeben kannst:

Dim rst As Object
Set rst = CreateObject("ADODB.Recordset")
rst.Open "SELECT [Code], [Country] FROM tblISOCOuntryCodes;", cnn, adOpenStatic

Dim DeinArray() As Variant
DeinArray = rst.GetRows ' Füllt das Array mit den Daten

ListBox1.List = Application.Transpose(DeinArray) ' Transponiere das Array, falls nötig

Tipps für Profis

  • Verwende GetRows: Dies ist eine effiziente Methode, um Daten in ein Array zu füllen, besonders bei großen Datensätzen.

  • Transponieren: Wenn du ein 2D-Array hast, das nicht in der richtigen Form ist, kannst du es mit Application.Transpose transponieren.

  • Fehlerbehandlung: Implementiere Fehlerbehandlung in deinem Code, um unerwartete Probleme zu vermeiden.


FAQ: Häufige Fragen

1. Warum funktioniert AddItem nicht mit mehr als 10 Spalten?
AddItem ist auf 10 Spalten begrenzt, wenn du die Listbox manuell befüllst. Verwende stattdessen die List-Eigenschaft, um die Daten in einem Array zu übergeben.

2. Wie kann ich ein VBA-Array füllen?
Du kannst ein Array in VBA füllen, indem du es mit Werten aus einem Bereich befüllst oder Daten aus einer Datenbank abrufts, wie im Beispiel gezeigt.

3. Ist es möglich, Daten direkt aus Access in die Listbox zu laden?
Ja, du kannst die Daten direkt importieren und die RowSource-Eigenschaft der Listbox verwenden, um die Daten anzuzeigen.

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