VBA ListView auslesen

Abraxas_X

Grünschnabel
Hallo Zusammen,
bin neu hier und in VBA bisschen gewandert.
Ich versuche grade per ListView die Daten die sich in einer Tabelle befinden in 3 TextBoxen auszulesen.
Leider zeigt er mir einen Fehler.

Benutze folgenden Code dafür:

Private Sub ListView1_Click()
Dim X As Integer
For X = 0 To ListView1.Items.Count - 1
TextBox1 = ListView1.Items(X).SubItems(0).Text ' Wert aus 1. Spalte
TextBox2 = ListView1.Items(X).SubItems(1).Text ' Wert aus 2. Spalte
TextBox3 = ListView1.Items(X).SubItems(2).Text ' Wert aus 3. Spalte

Next X


End Sub

Fehler Meldung bei Items:

MfG

Ab........
 
Ich war immer der Meinung, der Items-Count für ListViews beginnt bei 1 statt bei 0

Visual Basic:
For x=1 To ListView1.Items.Count

Und muss das nicht ListItems (Statt Items) heissen?
Visual Basic:
For x=1 To ListView1.ListItems.Count
 
Guten abend,
vielen dank für deine schnelle antwort und auch für deine Hilfe.
Hab den code abgeändert, und jetzt zeigt er mir einen anderen Fehler an.

Visual Basic:
Private Sub ListView1_Click()
Dim X As Integer
    For X = 1 To ListView1.ListItems.Count
        TextBox1 = ListView1.ListItems(X).SubItems(0).Text   ' Wert aus 1. Spalte
        TextBox2 = ListView1.ListItems(X).SubItems(1).Text  ' Wert aus 2. Spalte
        TextBox3 = ListView1.ListItems(X).SubItems(2).Text   ' Wert aus 3. Spalte
        
    Next X
End Sub
 
Zuletzt bearbeitet von einem Moderator:
Hallo,
sorry das ich mich erst jetzt melde, war Beruflich sehr angespannd.
Im Anhang befindet sich die Fehler meldung

In den Texten wird aber leider noch nix angezeigt, wie bekomme ich das man besten hin, wenn ich auf einen eintrag in ListView klicken, das er mir die Daten in den TextBoxen anzeigt?

gruß
 

Anhänge

  • Fehler_vba.jpg
    Fehler_vba.jpg
    79,4 KB · Aufrufe: 6
Zuletzt bearbeitet:
Ungetestet.
Visual Basic:
Private Sub ListView1_Click()
Dim X As Integer
    For X = 1 To ListView1.ListItems.Count
        TextBox1 = ListView1.ListItems(X).Text   ' Wert aus 1. Spalte
        TextBox2 = ListView1.ListItems(X).SubItems(1)  ' Wert aus 2. Spalte
        TextBox3 = ListView1.ListItems(X).SubItems(2)   ' Wert aus 3. Spalte
        
    Next X
End Sub

Dir ist aber klar, dass obiger Code dir nur die letzte Zeile des ListViews in die Textboxen einträgt?

Wenn du die ausgewählte Zeile haben willst
Visual Basic:
Private Sub ListView1_Click()
   If ListView1.SelectedItem <> "" Then  'Hier bin ich mir nicht sicher
        TextBox1 = ListView1.SelectedItem.Text   ' Wert aus 1. Spalte
        TextBox2 = ListView1.SelectedItem.SubItems(1)  ' Wert aus 2. Spalte
        TextBox3 = ListView1.SelectedItem.SubItems(2)   ' Wert aus 3. Spalte
   End If
End Sub
 
Hallo Zvoni,
habe grade versucht mit Listview zu sortieren.
Aber in der Ersten Splate, sortiert er nicht direct nach den ID, sondern nur nach Zahlen.
Wie bekomme ich das richtig hin.

Diesen Code habe ich durch ein Video gefunden:
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)

With Me.ListView1
.SortKey = ColumnHeader.Index - 1

If .SortOrder = lvwDescending Then
.SortOrder = lvwAscending

Else
.SortOrder = lvwDescending
End If

.Sorted = True


End With

End Sub


Wäre für jede Hilfe dankbar
Schönen abend noch
 
Hallo Zvoni,
habe grade versucht mit Listview zu sortieren.
Aber in der Ersten Splate, sortiert er nicht direct nach den ID, sondern nur nach Zahlen.
Wie bekomme ich das richtig hin.

Diesen Code habe ich durch ein Video gefunden:
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)

With Me.ListView1
.SortKey = ColumnHeader.Index - 1

If .SortOrder = lvwDescending Then
.SortOrder = lvwAscending

Else
.SortOrder = lvwDescending
End If

.Sorted = True


End With

End Sub


Wäre für jede Hilfe dankbar
Schönen abend noch
Kein Wort verstanden.
Was meinst du mit ID, und was heisst sortiert nach Zahlen?

Alle Einträge in allen Zellen eines Listview sind String/Text.
Heisst: Sortierung erfolgt alphanumerisch —> „2“ kommt nach „11“

Willst du eine echte numerische Sortierung, musst du das selbst implementieren.
Stichwort: Quicksort
 
Zurück