aivilon
Goto Top

ListView Excel VBA - Überschrift und Spaltenwerte

Moin Zusammen

Ich brauche in meiner UserForm eine Liste. Diese Liste soll die Spalten F, G, I und L anzeigen. Jeweils in Zelle 1 steht der Titel der Spalte, welcher dann auch für die ListView der Titel sein soll.

Ich hab mich nun schon durch Google gekämpft und was gefunden. Aber irgendwie bring ich das nicht auf mein Bedürfnis hin:
Worksheets("BISy").Activate  

Dim oItem As ListItem
Dim Daten(0 To 500, 2) As Variant
Dim i As Long
    With ListView1
        '.Width = 350  
        '.Height = 300  
        .View = lvwReport
        .ColumnHeaders.Add , , Sheets("BISy").Range("F1"), 70  
        .ColumnHeaders.Add , , Sheets("BISy").Range("G1"), 100  
        .ColumnHeaders.Add , , Sheets("BISy").Range("I1"), 200  
        .ColumnHeaders.Add , , Sheets("BISy").Range("L1"), 40  
        .Gridlines = True
        For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            Daten(i - 2, 0) = Cells(i, 6)
            Daten(i - 2, 1) = Cells(i, 7)
            Daten(i - 2, 2) = Cells(i, 9)
            Daten(i - 2, 3) = Cells(i, 12)
            Set oItem = .ListItems.Add(, , Daten(i - 2, 6))
            oItem.SubItems(1) = Daten(i - 2, 7)
            oItem.SubItems(2) = Daten(i - 2, 9)
            oItem.SubItems(3) = Daten(i - 2, 12)
        Next
    End With

Original war es so:
Private Sub UserForm_Initialize()
Dim oItem As ListItem
Dim Daten(0 To 500, 2) As Variant
Dim i As Long
    With ListView1
        .View = lvwReport
        .ColumnHeaders.Add , , Sheets("Tabelle1").Range("A1"), .Width / 3  
        .ColumnHeaders.Add , , Sheets("Tabelle1").Range("B1"), .Width / 3  
        .ColumnHeaders.Add , , Sheets("Tabelle1").Range("D1"), .Width / 3  
        .Gridlines = True
        For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            Daten(i - 2, 0) = Cells(i, 1)
            Daten(i - 2, 1) = Cells(i, 2)
            Daten(i - 2, 2) = Cells(i, 4)
            Set oItem = .ListItems.Add(, , Daten(i - 2, 0))
            oItem.SubItems(1) = Daten(i - 2, 1)
            oItem.SubItems(2) = Daten(i - 2, 2)
        Next
    End With
End Sub

Fehlermeldung:
Laufzeitfehler '9':
Index ausserhalb des gültigen Bereichs


Wo habe ich einen Denkfehler/Flüchtigkeitsfehler/Unwissenheitsfehler gemacht?


Grüsse, Aiv

Content-ID: 277907

Url: https://administrator.de/contentid/277907

Ausgedruckt am: 18.11.2024 um 03:11 Uhr

114757
Lösung 114757 21.07.2015, aktualisiert am 22.07.2015 um 10:15:03 Uhr
Goto Top
Moin,
    Dim ws As Worksheet, oItem As ListItem, itms As ListItems, i as Long
    Set ws = Sheets("BISy")  
    With ListView1
        .View = lvwReport
        .ColumnHeaders.Add , , ws.Range("F1"), 70  
        .ColumnHeaders.Add , , ws.Range("G1"), 100  
        .ColumnHeaders.Add , , ws.Range("I1"), 200  
        .ColumnHeaders.Add , , ws.Range("L1"), 40  
        .Gridlines = True
        For i = 2 To ws.UsedRange.SpecialCells(xlCellTypeLastCell).Row
            Set oItem = .ListItems.Add(, , ws.Cells(i, "F"))  
            oItem.SubItems(1) = ws.Cells(i, "G")  
            oItem.SubItems(2) = ws.Cells(i, "I")  
            oItem.SubItems(3) = ws.Cells(i, "L")  
        Next
    End With
Gruß jodel32
aivilon
aivilon 22.07.2015 um 09:37:05 Uhr
Goto Top
Moin Jodel

Danke dir! geht wunderbar. Hab noch bei DIM i AS Long hinzugefügt.
Sonst wunderbar!


Grüsse
Aiv