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

Forumthread: Spalten in mehrspaltiger Listbox formatieren

Spalten in mehrspaltiger Listbox formatieren
22.01.2007 10:06:38
Till
Hallo Leute,
mal wieder ein kleines Problem,
ich lasse in einer Listbox auf einer Userform die Spalten eines Tabellenblattes erscheinen.
Das ganze mache ich so:


Sub Listbox()
Dim Zeile2 As Integer, MyList(2836, 8), r As Integer, wksListe As Worksheet
    Set wksListe = Worksheets("Wertetabelle")
    Zeile2 = wksListe.Cells(wksListe.Rows.Count, "A").End(xlUp).Row 'letzte Zeile mit Daten
    With Verkehr 'so heißt meine Userform
        With .ListBox1 'so heißt die Listbox auf der die Werte aus der Wertetabelle angezeigt werden sollen
        .ColumnHeads = False
        .ColumnCount = 8
        .ColumnWidths = 75
        For r = 4 To Zeile2
        If wksListe.Range("E" & r + 1) <> "" Then
            .AddItem wksListe.Range("E" & r + 1)                    'Datum
            .List(.ListCount - 1, 1) = wksListe.Range("F" & r + 1)  'Zeit: am liebsten als "hh:mm:ss" formatieren!
            .List(.ListCount - 1, 2) = wksListe.Range("D" & r + 1)  'Straßenname
            .List(.ListCount - 1, 3) = wksListe.Range("K" & r + 1)  'Qges
            .List(.ListCount - 1, 4) = wksListe.Range("X" & r + 1)  'QLkw
            .List(.ListCount - 1, 5) = wksListe.Range("L" & r + 1)  'Speed: am liebsten als "#.##0." formatieren
            .List(.ListCount - 1, 6) = wksListe.Range("V" & r + 1)  'B
            .List(.ListCount - 1, 7) = wksListe.Range("T" & r + 1)  'LOS
         End If
        Next r
    End With
    End With
End Sub


Hierbei ist es gewollt, dass ich die Reihenfolge der Spalten neu anordne.
Das ganze funktioniert ziemlich gut. Gibt es dabei eine einfache Möglichkeit auch die benutzerdefinierten Formate mit zu übernehmen?
Spalte F soll z.B. als Uhrzeit also "hh:mm:ss" definiert sein, Spalte L als "#.##0."
Schon mal Danke!
Gruß Till
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten in mehrspaltiger Listbox formatieren
22.01.2007 10:40:35
fcs
Hallo Till,
entweder so:
.List(.ListCount - 1, 5) = wksListe.Range("L" & r + 1).Text
dann wird die Zahlendarstellung wie im Tabellenblatt übernommen oder
.List(.ListCount - 1, 5) = Format(wksListe.Range("L" & r + 1).Value,"hh.mm.ss")
Gruß Franz
Anzeige
AW: Spalten in mehrspaltiger Listbox formatieren
22.01.2007 11:17:25
Till
Hallo Franz,
vielen Dank für die schnelle Antwort.
Das mit Spalte F für die Zeit hat geklappt!
Hast Du vielleicht auch noch eine Idee, wie ich die Daten in Spalte L für "Speed" darstelle. In der Wertetabelle sind die als 1000er definiert mit 1000er-Trennpunkt. Die letzten 3 Nullen sind hier aber zu viel.
Bsp.: Angabe z.B. 73.000, was als 73,00 in der Listbox dargestellt werden soll.
Ich hatte es erst mit "#.##0." ausprobiert. Das hat aber leider nicht funktioniert! Was meinst Du?
Danke schon mal!
Gruß Till
Anzeige
AW: Spalten in mehrspaltiger Listbox formatieren
22.01.2007 13:29:16
fcs
Hallo Till,
etwa so:
  .List(.ListCount - 1, 5) = Format(wksListe.Range("L" & r + 1).Value / 1000, "#,##0.00") 'Speed: am liebsten als "#.##0." formatieren

Die Division durch 1000 muss du ggf. anpassen.
Gruß
Franz
AW: Spalten in mehrspaltiger Listbox formatieren
22.01.2007 17:32:56
Till
Hallo Franz,
danke super....hat alles bestens geklappt.
Genau der Denkanstoß war nötig!
Gruß Till
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Spalten in mehrspaltiger Listbox formatieren


Schritt-für-Schritt-Anleitung

Um Spalten in einer mehrspaltigen Listbox auf einer Userform zu formatieren und anzuzeigen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Erstelle eine neue Userform: Klicke mit der rechten Maustaste auf "VBAProject" und wähle "Einfügen" > "UserForm".
  3. Füge eine Listbox hinzu: Ziehe eine Listbox auf die Userform.
  4. Füge den folgenden VBA-Code ein:
Sub Listbox()
    Dim Zeile2 As Integer, MyList(2836, 8), r As Integer, wksListe As Worksheet
    Set wksListe = Worksheets("Wertetabelle")
    Zeile2 = wksListe.Cells(wksListe.Rows.Count, "A").End(xlUp).Row ' letzte Zeile mit Daten

    With Verkehr ' so heißt meine Userform
        With .ListBox1 ' so heißt die Listbox auf der die Werte angezeigt werden sollen
            .ColumnHeads = False
            .ColumnCount = 8
            .ColumnWidths = 75

            For r = 4 To Zeile2
                If wksListe.Range("E" & r + 1) <> "" Then
                    .AddItem wksListe.Range("E" & r + 1) ' Datum
                    .List(.ListCount - 1, 1) = wksListe.Range("F" & r + 1) ' Uhrzeit
                    .List(.ListCount - 1, 2) = wksListe.Range("D" & r + 1) ' Straßenname
                    .List(.ListCount - 1, 3) = wksListe.Range("K" & r + 1) ' Qges
                    .List(.ListCount - 1, 4) = wksListe.Range("X" & r + 1) ' QLkw
                    .List(.ListCount - 1, 5) = wksListe.Range("L" & r + 1) ' Speed
                    .List(.ListCount - 1, 6) = wksListe.Range("V" & r + 1) ' B
                    .List(.ListCount - 1, 7) = wksListe.Range("T" & r + 1) ' LOS
                End If
            Next r
        End With
    End With
End Sub
  1. Anpassung der Formatierung: Um benutzerdefinierte Formate zu übernehmen, passe die Zuweisungen in der Listbox an:
.List(.ListCount - 1, 5) = Format(wksListe.Range("L" & r + 1).Value / 1000, "#,##0.00") ' Speed

Häufige Fehler und Lösungen

  • Fehler: Werte werden nicht korrekt angezeigt.

    • Lösung: Stelle sicher, dass die Zellen der Quelltabelle die richtigen Formate haben und dass der Code korrekt auf die Zellreferenzen zugreift.
  • Fehler: Listbox bleibt leer.

    • Lösung: Überprüfe, ob die Userform korrekt geladen wurde und ob die Listbox-Eigenschaften richtig gesetzt sind.

Alternative Methoden

Eine alternative Methode zur Darstellung von Daten in einer Listbox könnte die Verwendung einer ComboBox sein, falls eine Auswahl von Einträgen gewünscht ist.

With .ComboBox1
    .AddItem "Option 1"
    .AddItem "Option 2"
End With

Praktische Beispiele

Hier ein Beispiel, wie du die Daten aus einer Tabelle in einer Listbox anzeigen und formatieren kannst:

.List(.ListCount - 1, 1) = Format(wksListe.Range("F" & r + 1).Value, "hh:mm:ss") ' Uhrzeit formatieren

Tipps für Profis

  • Nutze benutzerdefinierte Formate in Excel, um die Ausgabe in der Listbox zu optimieren.
  • Denke daran, dass die maximale Anzahl an Einträgen in einer Listbox 32.767 beträgt. Plane deine Daten entsprechend.

FAQ: Häufige Fragen

1. Wie kann ich die Spaltenbreite in der Listbox anpassen?
Verwende die Eigenschaft .ColumnWidths, um die Breite jeder Spalte festzulegen.

2. Wie kann ich die Listbox mit Daten aus mehreren Blättern füllen?
Du kannst mehrere AddItem-Befehle innerhalb der Schleife verwenden, um Einträge aus verschiedenen Arbeitsblättern hinzuzufügen, indem du die entsprechenden Worksheet-Referenzen anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige