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

Listview flexible ColumnHeaders

Forumthread: Listview flexible ColumnHeaders

Listview flexible ColumnHeaders
15.04.2019 06:46:25
Ludmila
Hallo,
in meiner Userform ListView lese ich die ColumnHeaders ab Spalte 16 und 21 bis ?
ein.
Wie schaffe ich es das die ListItems().SubItems() ebenfalls eigelesen werden.
Leider bekomme ich immer wieder Fehlermeldungen.
Danke!
Gruß
Ludmila
https://www.herber.de/bbs/user/129147.xlsm
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listview flexible ColumnHeaders
15.04.2019 08:18:42
Luschi
Hallo Ludmila,
bei mir klappt das so:

Private Sub CommandButton2_Click()
Dim i As Integer
Dim lxl As Long
Dim wksP As Worksheet
Dim lol As Long, x As Integer, y As Integer, z As Integer
Set wksP = ThisWorkbook.Worksheets("Proj")
x = 2
z = 2
With UserForm1.ListViewAusw
.ColumnHeaders.Clear
.ListItems.Clear
.Gridlines = True
.View = 3
.ColumnHeaders.Add 1, , wksP.Cells(1, 16), wksP.Columns(16).Width
For lxl = 21 To wksP.Cells(1, wksP.Columns.Count).End(xlToLeft).Column
.ColumnHeaders.Add x, , wksP.Cells(1, lxl), wksP.Columns(lxl).Width
x = x + 1
Next lxl
For lol = 2 To wksP.Cells(Rows.Count, 16).End(xlUp).Row
.ListItems.Add , , wksP.Cells(lol, 16)
For lxl = 21 To wksP.Cells(lol, wksP.Columns.Count).End(xlToLeft).Column
y = y + 1
'z ist die 1. Zeilen-Nr., wird aber benutzt für den Zeilenindex der  _
ListView!
.ListItems(z - 1).SubItems(y) = Format(wksP.Cells(lol, lxl), "#,##0.00")
Next lxl
y = 0       'wichtig
z = z + 1   'stand an der falschewn Stelle!
Next lol
End With
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Listview flexible ColumnHeaders
15.04.2019 11:21:21
Ludmila
Hallo Luschi,
Danke sehr bei funktioniert es jetzt auch.
Gruß
Ludmila
;
Anzeige

Infobox / Tutorial

Flexible ColumnHeaders in Listview nutzen


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Stelle sicher, dass du eine UserForm in deinem Excel-VBA-Projekt hast, die ein ListView-Steuerelement enthält.

  2. ColumnHeaders initialisieren: Du kannst die ColumnHeaders mit der Methode columnheaders.add hinzufügen. Hier ein Beispiel:

    With UserForm1.ListViewAusw
       .ColumnHeaders.Clear
       .ColumnHeaders.Add 1, , "Header1", 100
       .ColumnHeaders.Add 2, , "Header2", 100
    End With
  3. ListItems hinzufügen: Um ListItems hinzuzufügen, durchlaufe die Daten und füge sie wie folgt hinzu:

    For i = 1 To 10
       .ListItems.Add , , "Item " & i
       .ListItems(i - 1).SubItems(1) = "SubItem " & i
    Next i
  4. Datenquelle anpassen: Stelle sicher, dass die Datenquelle korrekt ist. Die Daten sollten in der Excel-Tabelle vorhanden sein, von der du sie lesen möchtest.

  5. Fehlerbehebung: Wenn du Fehlermeldungen erhältst, überprüfe, ob die Spaltenindizes korrekt sind und ob die Daten in der Tabelle vorhanden sind.


Häufige Fehler und Lösungen

  • Fehlermeldung: Ungültiger Index: Dies kann passieren, wenn du versuchst, auf eine ColumnHeader oder ListItem zuzugreifen, das nicht existiert. Überprüfe die Indizes und stelle sicher, dass sie gültig sind.

  • ListItems werden nicht angezeigt: Achte darauf, dass du die ListItems nicht vorher gelöscht hast, bevor du sie hinzufügst. Nutze .ListItems.Clear, um sicherzustellen, dass die Liste leer ist, bevor du neue Items hinzufügst.


Alternative Methoden

Eine alternative Methode zur Verwendung von ListView ist die Verwendung von DataGridView in Kombination mit VBA, was dir mehr Flexibilität hinsichtlich der Darstellung deiner Daten gibt. Allerdings ist dies etwas komplexer und erfordert zusätzliche Programmierung.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das die Verwendung von ListView mit ColumnHeaders zeigt:

Private Sub CommandButton1_Click()
    Dim i As Integer
    With UserForm1.ListViewAusw
        .ColumnHeaders.Clear
        .ColumnHeaders.Add 1, , "Name", 100
        .ColumnHeaders.Add 2, , "Alter", 50

        For i = 1 To 5
            .ListItems.Add , , "Person " & i
            .ListItems(i - 1).SubItems(1) = 20 + i
        Next i
    End With
End Sub

In diesem Beispiel werden ColumnHeaders für "Name" und "Alter" hinzugefügt und entsprechend ListItems mit SubItems befüllt.


Tipps für Profis

  • Dynamische Anpassung der ColumnHeaders: Du kannst die Breite der Spalten dynamisch anpassen, indem du die Breite der Spalten in deiner Excel-Tabelle misst und diese Werte übergibst.

  • Verwendung von Formatierungen: Nutze die Formatierungsoptionen in VBA, um die Darstellung deiner Daten in ListView ansprechender zu gestalten. Beispielsweise kannst du Zahlen formatiert anzeigen lassen.


FAQ: Häufige Fragen

1. Wie kann ich die Sortierung in ListView aktivieren?
Um die Sortierung zu aktivieren, setze die SortKey-Eigenschaft des ListView-Steuerelements und setze die Sorted-Eigenschaft auf True.

2. Welche Excel-Version benötige ich für ListView?
Die ListView-Steuerelemente sind in Excel 2003 und späteren Versionen verfügbar. Stelle sicher, dass du die richtigen Verweise in deinem VBA-Projekt gesetzt hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige