Anzeige
Archiv - Navigation
1432to1436
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten aus ListView exportieren

Daten aus ListView exportieren
21.06.2015 20:25:35
DirkR
Hallo Excelgemeinde,
ich habe dank der Hilfe aus dem Forum folgenden Code zum Befüllen von ListView1 in einer UF (bei Veränderung einer Textbox). Das funktioniert auch super. Nun möchte ich zusätzlich einen CommandButton, der den gesamten Inhalt von ListView1 in eine "neue" Arbeitsmappe kopiert.
Ich komme da einfach nicht weiter und bitte um Hilfe!
Hier mein Code:
Klassenmodul - Klasse1
Option Explicit
Option Compare Text
Public WithEvents objText As MSForms.TextBox
Private Sub objText_Change()
'Kontaktinfos.TextBox21 = Format(Kontaktinfos.TextBox21, "#,###.00 €")
Application.ScreenUpdating = False
Dim ArList
Dim booFund As Boolean, booListeLeer As Boolean
Dim nCount&, n&, nn&
With Kontaktinfos
.Frame1.Caption = "Kundenübereinstimmungen"
.ListView1.BackColor = -2147483643 '12632064
If .Tag  "" Then Exit Sub
With Tabelle1
ArList = .Range("F2", .Cells(.Rows.Count, 7).End(xlUp)).Resize(, 30)
End With
booListeLeer = True
For n = LBound(ArTxT) To UBound(ArTxT)
If ArTxT(n).objText  "" Then booListeLeer = False: Exit For
Next n
ListView_ScreenUpdating .ListView1, False
With .ListView1
.ListItems.Clear
For n = 3 To UBound(ArList)
If Not booListeLeer Then
booFund = True
For nn = 1 To 30
If Not (ArList(n, nn) Like ArTxT(nn).objText & "*") _
And ArTxT(nn).objText  "" Then
booFund = False
Exit For
End If
Next nn
End If
If booFund Or booListeLeer Then
nCount = nCount + 1
.ListItems.Add nCount, , ArList(n, 1)
For nn = 2 To 30
.ListItems(nCount).SubItems(nn - 1) = ArList(n, nn)
Next nn
booFund = False
End If
Next n
End With
LVColumnWidth .ListView1, True
ListView_ScreenUpdating .ListView1, True
End With
Application.ScreenUpdating = True
End Sub
Vielen Dank schon mal im Voraus.
Gruß DirkR

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus ListView exportieren
22.06.2015 09:13:03
Nepumuk
Hallo,
ein Beispiel:
Private Sub CommandButton2_Click()
    Dim avntTemp As Variant
    Dim lngRow As Long, lngColumn As Long
    With ListView1
        Redim avntTemp(1 To .ListItems.Count, 1 To .ColumnHeaders.Count)
        For lngRow = 1 To .ListItems.Count
            avntTemp(lngRow, 1) = .ListItems(lngRow).Text
            For lngColumn = 2 To .ColumnHeaders.Count
                avntTemp(lngRow, lngColumn) = .ListItems(lngRow).ListSubItems(lngColumn - 1).Text
            Next
        Next
    End With
    Tabelle1.Cells(1, 1).Resize(UBound(avntTemp, 1), UBound(avntTemp, 2)) = avntTemp
End Sub

Gruß
Nepumuk

Anzeige
AW: Daten aus ListView exportieren
25.06.2015 19:50:22
DirkR
Hallo Nepumuk, Hallo Forumsmitglieder!
Sorry, dass ich erst jetzt eine Rückmeldung gebe. Konnte aber leider erst heute dein Beispiel testen.
Es klappt super!!!!!
Vielen Dank!!!
Ich hätte noch ein Anliegen....
Mit folgendem Code fülle ich ListView1 nach 3 Kriterien.
1. Spalte 1 = "aktiv"
2. Spalte 4 = Wert größer null und 3. Spalte18 = "Personxy"
Das klappt auch ganz gut. Allerdings werden die Daten so von Zeile zu Zeile eingelesen. Ich hätte aber gerne, dass die Daten aufsteigend nach Spalte 4 in ListView1 geschrieben werden. Also das älteste Datum zuerst bis zum heutigen Datum.
Das habe ich auch schon hinbekommen (siehe unten die auskommentierten Zeilen). Allerdings wird das ganze dann sehr lahm, wenn die Datenmenge einen gewissen Umfang erreicht hat.
Ich komme da aber nicht weiter!?!?!
Bitte um Hilfe!
Private Sub CommandButton10_Click()
'#### Wiedervorlage bis inkl. Heute - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Dim ArList, minDatum As Date, Datum As Date
Dim booFund As Boolean, booListeLeer As Boolean
Dim nCount&, n&, nn&
Dim I As Integer
Application.ScreenUpdating = False
With Kontaktinfos
.Tag = "1"
Call EingabeAbgleichen
.CheckBox1.Value = True
TextBox1.Value = "aktiv"
For I = 2 To 17
.Controls("Textbox" & I).Value = ""
Next I
For I = 19 To 30
.Controls("Textbox" & I).Value = ""
Next I
With Sheets("Eingabe")
ArList = .Range("F2", .Cells(.Rows.Count, 7).End(xlUp)).Resize(, 30)
minDatum = Application.WorksheetFunction.Min(.Range("I:I"))
End With
With .ListView1
.ListItems.Clear
ListView_ScreenUpdating Kontaktinfos.ListView1, False
'For Datum = minDatum To Date
For n = 3 To UBound(ArList)
If ArList(n, 1) = "aktiv" And ArList(n, 4) > 0 And ArList(n, 4) 
Vielen Dank schon mal!
Gruß DirkR

Anzeige
AW: Daten aus ListView exportieren
25.06.2015 20:23:45
DirkR
Hallo Nepumuk,
ich habe noch eine Frage. Wie bekomme ich die ListView1-Überschriften noch in die Tabelle?
Schon mal vielen Dank!!!
Gruß DirkR

AW: Daten aus ListView exportieren
26.06.2015 08:03:20
Nepumuk
Hallo,
1. Schreib die Daten erst in ein Array welches du sortierst bevor du es in das ListView übernimmst. Das ListView lässt sich zwar sortieren, aber das ist nicht ganz trivial, speziell der Zugriff auf die ListItems nach dem Sortieren ist nicht ganz einfach.
2. So:
Private Sub CommandButton2_Click()
    Dim avntTemp As Variant
    Dim lngRow As Long, lngColumn As Long
    With ListView1
        Redim avntTemp(0 To .ListItems.Count, 1 To .ColumnHeaders.Count)
        For lngColumn = 1 To .ColumnHeaders.Count
            avntTemp(0, lngColumn) = .ColumnHeaders(lngColumn).Text
        Next
        For lngRow = 1 To .ListItems.Count
            avntTemp(lngRow, 1) = .ListItems(lngRow).Text
            For lngColumn = 2 To .ColumnHeaders.Count
                avntTemp(lngRow, lngColumn) = .ListItems(lngRow).ListSubItems(lngColumn - 1).Text
            Next
        Next
    End With
    Tabelle1.Cells(1, 1).Resize(UBound(avntTemp, 1) + 1, UBound(avntTemp, 2)) = avntTemp
End Sub

Gruß
Nepumuk

Anzeige
AW: Daten aus ListView exportieren
28.06.2015 20:29:14
DirkR
Hallo Nepumuk,
vielen Dank für deine Hilfe. Punkt 2 funktioniert einwandfrei.
Punkt 1 bekomme ich nicht hin.Ich schaffe es nicht die Daten in einem Array zu sortieren. :-(
Ist es ratsam einfach die Tabelle vorher nach Spalte H aufsteigensd zu sortieren, dann die Daten in das ListView, und dann die Tabelle wieder sortieren, wie sie vorher war?
Das würde ich hinbekommen!
Gruß DirkR

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige