Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Probleme mit mehrdimensionalem Array

Forumthread: Probleme mit mehrdimensionalem Array

Probleme mit mehrdimensionalem Array
09.11.2014 13:56:57
Kasimir
Hallo an alle Helfer!
Mit folgendem Code-Schnipsel fülle ich ein Array und gebe den Inhalt in einer ComboBox mit 2 Spalten aus.

Dim arr()               As String
lngEintrgasnummer = 0
For lngRowPatienten = 2 To Patientenliste.Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(Patientenliste.Range("D2:D" & lngRowPatienten), _
Patientenliste.Cells(lngRowPatienten, 4)) = 1 Then
lngEintrgasnummer = lngEintrgasnummer + 1
ReDim Preserve arr(1 To 2, 1 To lngEintrgasnummer)
arr(1, lngEintrgasnummer) = Patientenliste.Cells(lngRowPatienten, 4)
arr(2, lngEintrgasnummer) = lngRowPatienten
End If
Next
With ComboBox1
.Clear
.ColumnCount = 2
.ColumnWidths = "4cm; 0cm"
If lngRowPatienten > 0 Then _
.List() = WorksheetFunction.Transpose(arr)
End With
Das funktioniert soweit auch gut. Außer, in dem Array gibt es nur einen Eintrag. Dann werden mir nicht 2 Spalten in der ComboBox gefüllt, wie sonst, sondern der Arrayinhalt steht dann untereinander in der ComboBox. Wie kann ich das ändern?
Danke Euch schon mal,
Kasimir

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit mehrdimensionalem Array
09.11.2014 14:17:31
Daniel
Hi
Das Problem ist, dass die Transpose-Funktion aus 2-d-Arrays mit nur einer Spalte ein 1-d-Array macht, welches dann wieder als Zeilen in die Listbox geschrieben wird.
Die möglichen Lösungen wären hier:
a) mache eine Fallunterscheidung und schreibe die Werte per .AddItem in die Listbox wenn nur ein Eintrag vorhanden ist
If lngRowPatienten > 1 Then
.List() = WorksheetFunction.Transpose(arr)
ElseIf lngRowPatienten = 1 then
.AddItem arr(1, 1)
.List(0, 1) = arr(2, 1)
end If
b) nimm nicht Transpose, sondern wandle das Array per Schleife. Das ist bei größeren Datenmengen sowieso die bessere Methode.
redim arr2(1 to ubound(arr, 2), 1 to ubound(arr, 1))
For x = 1 to ubound(arr, 1)
for y = 1 to ubound(arr, 2)
arr2(y, x) =arr(x, y)
next y
Next x
Combobox1.list =arr2

Gruß Daniel

Anzeige
AW: Probleme mit mehrdimensionalem Array
09.11.2014 14:34:59
Kasimir
Hallo Daniel!
Danke Dir für Deine Antwort. Die hat mich sehr viel weitergebracht. Noch einen schönen Sonntag.
Gruß,
Kasimir
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige