Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1388to1392
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

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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige