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

Forumthread: VBA: ListBox mit Array füllen

VBA: ListBox mit Array füllen
08.10.2015 15:10:49
Tom
Hallo zusammen,
ich möchte eine ListBox über ein Array mit 3 Spalten füllen (Spalte E bis G):
Die ListBox soll alphabetisch nach Spalte E und ohne Duplikate (Spalte E bis G; also 3 Kriterien) gefüllt werden.
Mit folgender Datei wird die ListBox mit Spalte E gefüllt (sortiert und ohne Duplikate):
https://www.herber.de/bbs/user/100663.xlsm
Meine Fragen nun:
1.) Da ich VBA-Anfänger bin, ist das ein Quicksort ?
2.) Umlaute werden am Ende der Liste eingefügt (nach Z). Gibt es eine Möglichkeit, dass Umlaute nicht am Ende erscheinen, sondern z.B. Ä vor B?
3.) Wie ist es möglich die ListBox zusätzlich mit den Spalten 2 und 3 zu füllen? (ohne Duplikate auf alle 3 Spalten erweitern)
Oder denke ich hier zu kompliziert?
Vielen Dank schon mal für eure Tipps!
Mfg
Tom

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: ListBox mit Array füllen
08.10.2015 15:55:33
Daniel
Hi
ob das jetzt ein Qicksort ist, weiss ich nicht.
Da Excel eine Sortierfunktion hat, nutze ich in der Regel die
als VBA-Anfänger würde ich dir aber raten, die Listbox anders zu befüllen:
1. Zellbereich an eine andere stelle kopieren
2. dort nach Wunsch Duplikate entfernen mit den (Daten - Datentools - Duplikate entfernen)
3. mit der Sortierfunktion von Excel sortieren
4. Zellen von dort in die Listbox schreiben
5. Zellbereich löschen
dir reicht dann dieser Code, um die Listbox zu befüllen:
Private Sub UserForm_Initialize()
With Sheets("Tabelle2")
.Range("E2:G" & .Cells(1, 5).End(xlDown).Row).Copy
.Cells(1, 9).PasteSpecial xlPasteValues
With .Cells(1, 9).CurrentRegion
.Sort key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlNo
.RemoveDuplicates Array(1, 2, 3), Header:=xlNo
End With
With .Cells(1, 9).CurrentRegion
ListBox1.List = .Value
.ClearContents
End With
End With
End Sub

das ist viel einfacher zu Programmieren und du kannst vieles mit dem Recorder aufzeichnen.
Gruß Daniel

Anzeige
AW: VBA: ListBox mit Array füllen
08.10.2015 16:03:12
Mullit
Hallo,
...ja, ist Quicksort...
Gruß, Mullit

AW: VBA: ListBox mit Array füllen
14.10.2015 11:33:31
Tom
Hallo Daniel und Mullit,
vielen Dank für eure Antworten, die haben mir sehr geholfen!
Mfg
Tom
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
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 einem Array in VBA füllen


Schritt-für-Schritt-Anleitung

Um eine ListBox in Excel VBA mit einem Array zu füllen, kannst Du die folgenden Schritte befolgen:

  1. Zellenbereich festlegen: Bestimme den Zellbereich, der die Daten enthält, die in die ListBox eingefügt werden sollen (z.B. Spalten E bis G).
  2. Daten kopieren: Nutze VBA, um die Daten aus dem festgelegten Bereich zu kopieren.
  3. Duplikate entfernen: Verwende die Funktion RemoveDuplicates, um sicherzustellen, dass keine Duplikate in der ListBox angezeigt werden.
  4. Sortieren: Sortiere die Daten alphabetisch, bevor Du sie in die ListBox einfügst.
  5. ListBox befüllen: Übertrage die Daten aus dem Array in die ListBox.
  6. Zellenbereich löschen: Optional, lösche den temporären Zellbereich, um die Übersichtlichkeit zu wahren.

Hier ist ein Beispielcode, der diese Schritte umsetzt:

Private Sub UserForm_Initialize()
    With Sheets("Tabelle2")
        .Range("E2:G" & .Cells(1, 5).End(xlDown).Row).Copy
        .Cells(1, 9).PasteSpecial xlPasteValues
        With .Cells(1, 9).CurrentRegion
            .Sort key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlNo
            .RemoveDuplicates Array(1, 2, 3), Header:=xlNo
        End With
        With .Cells(1, 9).CurrentRegion
            ListBox1.List = .Value
            .ClearContents
        End With
    End With
End Sub

Häufige Fehler und Lösungen

  1. Fehler: ListBox bleibt leer.

    • Lösung: Überprüfe, ob der Zellbereich korrekt angegeben ist und ob die Daten dort vorhanden sind.
  2. Fehler: Duplikate werden nicht entfernt.

    • Lösung: Stelle sicher, dass die RemoveDuplicates-Methode korrekt aufgerufen wird und die richtigen Spaltenindizes angegeben sind.
  3. Fehler: Daten werden nicht korrekt sortiert.

    • Lösung: Vergewissere dich, dass die Sortierfunktion in VBA richtig implementiert ist und der Header-Parameter korrekt gesetzt ist.

Alternative Methoden

Wenn Du die ListBox nicht direkt über ein Array befüllen möchtest, gibt es auch alternative Methoden:

  • Zellbereich direkt in die ListBox: Anstatt ein Array zu verwenden, kannst Du den Zellbereich direkt in die ListBox einfügen, indem Du die List-Eigenschaft der ListBox verwendest.
  • VBA Recorder: Nutze den VBA Recorder, um einfache Aufgaben wie das Entfernen von Duplikaten oder das Sortieren aufzuzeichnen und den generierten Code anzupassen.

Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung einer ListBox in Verbindung mit einem Array in VBA:

  1. Füllen der ListBox mit einem Array von Werten:
Dim myArray(1 To 3, 1 To 3) As String
myArray(1, 1) = "Apfel"
myArray(1, 2) = "Banane"
myArray(1, 3) = "Kirsche"

ListBox1.List = myArray
  1. ListBox mit Daten aus einer Tabelle füllen:
Dim myData As Variant
myData = Application.Transpose(Sheets("Tabelle2").Range("E2:E10").Value)
ListBox1.List = myData

Tipps für Profis

  • Optimierung des Codes: Verwende Application.ScreenUpdating = False, um die Performance zu verbessern, wenn Du viele Daten bearbeitest.
  • Ereignisprozeduren: Denke daran, die UserForm_Initialize-Prozedur zu verwenden, um die ListBox beim Laden der UserForm zu befüllen.
  • Datenvalidierung: Implementiere eine Datenvalidierung, um sicherzustellen, dass die Daten, die in die ListBox eingefügt werden, den gewünschten Kriterien entsprechen.

FAQ: Häufige Fragen

1. Wie kann ich eine ListBox mit Daten aus einer Excel-Tabelle füllen?
Du kannst den Zellbereich mit den gewünschten Daten kopieren und dann die List-Eigenschaft der ListBox verwenden, um die Daten einzufügen.

2. Wie entferne ich Duplikate aus einer ListBox?
Du kannst die RemoveDuplicates-Methode verwenden, um Duplikate aus dem Array zu entfernen, bevor Du es in die ListBox einfügst.

3. Kann ich die ListBox nach einer bestimmten Spalte sortieren?
Ja, Du kannst die Sort-Methode verwenden, um die Daten im Array vor dem Füllen der ListBox zu sortieren.

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