Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1664to1668
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
Array in Array und dann in Listbox
06.01.2019 22:39:15
Werner
Hallo und schönen guten Abend,
ich will jetzt mal anfangen mich mit Arrays auseinander zu setzten. Hab davon aber bisher nicht viel bis gar keine Ahnung.
Folgedes Vorhaben:
Ich lese den Tabellenbereich A1:D12 in ein Array (arr1)
In Spalte D sind einige Einträge mit einem x markiert.
Diese Einträge will ich aus arr1 in arr2 übergeben.
arr2 soll dann auf einer Userform an eine 4-spaltige Listbox übergeben werden.
Das was ich mir zusammengestrickt habe funktioniert auch so weit. Es hat nur einen Pferdefuß und ich weiß nicht warum.
Übergebe ich arr1 an die Listbox dann ist alles ok.
Übergebe ich arr2 an die Listbox dann ist dort alles um eine Spalte nach rechts versetzt. Sprich die erste Spalte der Listbox ist leer und dadurch wird die Spalte D in der Listbox nicht angezeigt.
Erweitere ich die Listbox um eine Spalte dann sieht man, dass alles im arr2 vorhanden ist, nur _ halt um eine Spalte versetzt in der Listbox angezeigt wird.

Private Sub UserForm_Initialize()
Dim arr1 As Variant, arr2 As Variant
Dim anzahl As Long, i As Long, z As Long
arr1 = Worksheets("Tabelle1").Range("A1:D12")
For i = LBound(arr1) To UBound(arr1)
If arr1(i, 4) = "x" Then
anzahl = anzahl + 1
End If
Next i
ReDim arr2(anzahl - 1, 4)
For i = LBound(arr1) To UBound(arr1)
If arr1(i, 4) = "x" Then
arr2(z, 1) = arr1(i, 1)
arr2(z, 2) = arr1(i, 2)
arr2(z, 3) = arr1(i, 3)
arr2(z, 4) = arr1(i, 4)
z = z + 1
End If
Next i
'Me.ListBox1.List = arr1
Me.ListBox1.List = arr2
End Sub

Gruß Werner

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

Betreff
Datum
Anwender
Anzeige
AW: Array in Array und dann in Listbox
06.01.2019 22:50:04
Sepp
Hallo Werner,
der Stardindex von arr2 = 0, deshalb

ReDim arr2(anzahl - 1, 3)
For i = LBound(arr1) To UBound(arr1)
If arr1(i, 4) = "x" Then
arr2(z, 0) = arr1(i, 1)
arr2(z, 1) = arr1(i, 2)
arr2(z, 2) = arr1(i, 3)
arr2(z, 3) = arr1(i, 4)
z = z + 1
End If
Next i

oder

ReDim arr2( 1 To anzahl - 1, 1 To 4)
For i = LBound(arr1) To UBound(arr1)
If arr1(i, 4) = "x" Then
arr2(z, 1) = arr1(i, 1)
arr2(z, 2) = arr1(i, 2)
arr2(z, 3) = arr1(i, 3)
arr2(z, 4) = arr1(i, 4)
z = z + 1
End If
Next i

 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Array in Array und dann in Listbox
06.01.2019 23:05:58
Werner
Hallo Sepp,
da bleibt mir nur zu sagen - oh Mann bin ich bescheuert.
Herzlichen Dank.
Gruß Werner
AW: Array in Array und dann in Listbox
06.01.2019 23:07:10
onur
arr2 geht in der 1. Dimension von 1 bis z-1, aber in der 2. Dimension von 0 bis 4 statt von 1 bis 4.
Vor der Übergabe an die Listbox diese Zeile setzen:
redim preserve arr2(ubound(arr2),1 to 4)

AW: Array in Array und dann in Listbox
06.01.2019 23:12:38
Werner
Hallo Onur,
auch dir ein Dankeschön verbunden mit der Frage:
Das Preserve in deinem Beispiel bräuchte ich doch eigentlich nicht, da das arra2 noch leer ist, oder sehe ich das falsch?
Gruß Werner
AW: Array in Array und dann in Listbox
06.01.2019 23:15:32
onur
"Vor der Übergabe an die Listbox diese Zeile setzen" sollte heisen unmittelbar VOR, also nach dem befüllen des Arrays:
For i = LBound(arr1) To UBound(arr1)
If arr1(i, 4) = "x" Then
arr2(z, 1) = arr1(i, 1)
arr2(z, 2) = arr1(i, 2)
arr2(z, 3) = arr1(i, 3)
arr2(z, 4) = arr1(i, 4)
z = z + 1
End If
Next i
redim preserve arr2(ubound(arr2),1 to 4)

Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige