Hi Leute.
Erstmal Danke für die vielen Antworten.
Ich habs jetzt gelöst.
DAS IST IN VBA NICHT MÖGLICH !
Eigentlich war das von mir eine einfache Frage, die jedoch mit div. geforderten Beispielen (in einer Tabelle, was ja nicht meine Frage war) ausgeartet ist.
Einzig Daniel hat meine Frage soweit direkt verstanden,
ja, sowas sollte auch in VBA gehen:
dim x as variant
x = Array(Array("apple", 1), Array("grape", 4))
Ist allerdings kein echtes 2-D-Array, sondern ein 1-D-Array mit weiteren 1-D-Arrays als Werten.
Dementsprechend erfolgt die Ansprache der Einzelwerte nicht mit x(1, 1) sondern mit x(1)(1)
Per Transponieren kann man dann ein echtes 2-D-Array daraus machen.
und der Ansatz mit der Matrix (was aber dann zu Kompliziert war), aber Danke nochmal an alle.
Aufgrund der div. Programiersprachen mit denen ich so arbeite, war ich mir nicht sicher ob das was
z.B. in Visual Basic machbar ist, auch in VBA so läuft.
NEIN, das tut es nicht, VBA ist halt kein VB oder C#.
Meine Lösung, oder das was in VBA machbar ist ...
Public Type tData
Name As String
Address As String
Row As Integer
Col As Integer
End Type
Public xDays(7, 4) As tData
Public x_Days As Variant
Sub set_Arrays()
' Variante 1
If (xDays(1, 1).Name) = "" Then
xDays(1, 1).Name = "Mo": xDays(1, 1).Address = "$B$2": xDays(1, 1).Row = 2: xDays(1, 1). _
Col = 2 ' ("Mo" , $B:$2 , 2 ,2)
xDays(1, 2).Name = "Mo_B": xDays(1, 2).Address = "$B$3": xDays(1, 2).Row = 3: xDays(1, 2). _
Col = 2 ' ("Mo_B", $B:$3 , 3 ,2)
xDays(1, 3).Name = "Mo_E": xDays(1, 3).Address = "$B$4": xDays(1, 3).Row = 4: xDays(1, 3). _
Col = 2 ' ("Mo_E", $B:$4 , 4 ,2)
xDays(1, 4).Name = "Mo_X": xDays(1, 4).Address = "$B$12": xDays(1, 4).Row = 12: xDays(1, 4). _
Col = 2 ' ("Mo_X", $B:$12, 12,2)
xDays(2, 1).Name = "Di": xDays(2, 1).Address = "$B$14": xDays(2, 1).Row = 14: xDays(2, 1). _
Col = 2 ' ("Di" , $B:$14, 14,2)
xDays(2, 2).Name = "Di_B": xDays(2, 2).Address = "$B$15": xDays(2, 2).Row = 15: xDays(2, 2). _
Col = 2 ' ("Di_B", $B:$15, 15,2)
xDays(2, 3).Name = "Di_E": xDays(2, 3).Address = "$B$16": xDays(2, 3).Row = 16: xDays(2, 3). _
Col = 2 ' ("Di_E", $B:$16, 16,2)
xDays(2, 4).Name = "Di_X": xDays(2, 4).Address = "$B$24": xDays(2, 4).Row = 24: xDays(2, 4). _
Col = 2 ' ("Di_X", $B:$24, 24,2)
xDays(3, 1).Name = "Mi": xDays(3, 1).Address = "$B$26": xDays(3, 1).Row = 26: xDays(3, 1). _
Col = 2 ' ("Mi" , $B:$26, 26,2)
xDays(3, 2).Name = "Mi_B": xDays(3, 2).Address = "$B$27": xDays(3, 2).Row = 27: xDays(3, 2). _
Col = 2 ' ("Mi_B", $B:$27, 27,2)
xDays(3, 3).Name = "Mi_E": xDays(3, 3).Address = "$B$28": xDays(3, 3).Row = 28: xDays(3, 3). _
Col = 2 ' ("Mi_E", $B:$28, 28,2)
xDays(3, 4).Name = "Mi_X": xDays(3, 4).Address = "$B$36": xDays(3, 4).Row = 36: xDays(3, 4). _
Col = 2 ' ("Mi_X", $B:$36, 36,2)
xDays(4, 1).Name = "Do": xDays(4, 1).Address = "$B$38": xDays(4, 1).Row = 38: xDays(4, 1). _
Col = 2 ' ("Do" , $B:$38, 38,2)
xDays(4, 2).Name = "Do_B": xDays(4, 2).Address = "$B$39": xDays(4, 2).Row = 39: xDays(4, 2). _
Col = 2 ' ("Do_B", $B:$39, 39,2)
xDays(4, 3).Name = "Do_E": xDays(4, 3).Address = "$B$40": xDays(4, 3).Row = 40: xDays(4, 3). _
Col = 2 ' ("Do_E", $B:$40, 40,2)
xDays(4, 4).Name = "Do_X": xDays(4, 4).Address = "$B$48": xDays(4, 4).Row = 48: xDays(4, 4). _
Col = 2 ' ("Do_X", $B:$48, 48,2)
xDays(5, 1).Name = "Fr": xDays(5, 1).Address = "$B$50": xDays(5, 1).Row = 50: xDays(5, 1). _
Col = 2 ' ("Fr" , $B:$50, 50,2)
xDays(5, 2).Name = "Fr_B": xDays(5, 2).Address = "$B$51": xDays(5, 2).Row = 51: xDays(5, 2). _
Col = 2 ' ("Fr_B", $B:$51, 51,2)
xDays(5, 3).Name = "Fr_E": xDays(5, 3).Address = "$B$52": xDays(5, 3).Row = 52: xDays(5, 3). _
Col = 2 ' ("Fr_E", $B:$52, 52,2)
xDays(5, 4).Name = "Fr_X": xDays(5, 4).Address = "$B$60": xDays(5, 4).Row = 60: xDays(5, 4). _
Col = 2 ' ("Fr_X", $B:$60, 60,2)
xDays(6, 1).Name = "Sa": xDays(6, 1).Address = "$B$62": xDays(6, 1).Row = 62: xDays(6, 1). _
Col = 2 ' ("Sa" , $B:$62, 62,2)
xDays(6, 2).Name = "Sa_B": xDays(6, 2).Address = "$B$63": xDays(6, 2).Row = 63: xDays(6, 2). _
Col = 2 ' ("Sa_B", $B:$63, 63,2)
xDays(6, 3).Name = "Sa_E": xDays(6, 3).Address = "$B$64": xDays(6, 3).Row = 64: xDays(6, 3). _
Col = 2 ' ("Sa_E", $B:$64, 64,2)
xDays(6, 4).Name = "Sa_X": xDays(6, 4).Address = "$B$66": xDays(6, 4).Row = 66: xDays(6, 4). _
Col = 2 ' ("Sa_X", $B:$66, 66,2)
xDays(7, 1).Name = "So": xDays(7, 1).Address = "$B$68": xDays(7, 1).Row = 68: xDays(7, 1). _
Col = 2 ' ("So" , $B:$68, 68,2)
xDays(7, 2).Name = "So_B": xDays(7, 2).Address = "$B$69": xDays(7, 2).Row = 69: xDays(7, 2). _
Col = 2 ' ("So_B", $B:$69, 69,2)
xDays(7, 3).Name = "So_E": xDays(7, 3).Address = "$B$70": xDays(7, 3).Row = 70: xDays(7, 3). _
Col = 2 ' ("So_E", $B:$70, 70,2)
xDays(7, 4).Name = "So_X": xDays(7, 4).Address = "$B$72": xDays(7, 4).Row = 72: xDays(7, 4). _
Col = 2 ' ("So_X", $B:$72, 72,2)
End If
' Variante 2
x_Days = Array(Array(1, Array("Mo", "$B$2", 2, 2), Array("Mo_B", "$B$3", 3, 2), Array("Mo_E", _
"$B$4", 4, 2), Array("Mo_X", "$B$12", 12, 2)), _
Array(2, Array("Di", "$B$14", 14, 2), Array("Di_B", "$B$15", 15, 2), Array(" _
Di_E", "$B$16", 16, 2), Array("Di_X", "$B$24", 24, 2)), _
Array(3, Array("Mi", "$B$26", 26, 2), Array("Mi_B", "$B$27", 27, 2), Array(" _
Mi_E", "$B$28", 28, 2), Array("Mi_X", "$B$36", 36, 2)), _
Array(4, Array("Do", "$B$38", 38, 2), Array("Do_B", "$B$39", 39, 2), Array(" _
Do_E", "$B$40", 40, 2), Array("Do_X", "$B$48", 48, 2)), _
Array(5, Array("Fr", "$B$50", 50, 2), Array("Fr_B", "$B$51", 51, 2), Array(" _
Fr_E", "$B$52", 52, 2), Array("Fr_X", "$B$60", 60, 2)), _
Array(6, Array("Sa", "$B$62", 62, 2), Array("Sa_B", "$B$63", 63, 2), Array(" _
Sa_E", "$B$64", 64, 2), Array("Sa_X", "$B$66", 66, 2)), _
Array(7, Array("So", "$B$68", 68, 2), Array("So_B", "$B$69", 69, 2), Array(" _
So_E", "$B$70", 70, 2), Array("So_X", "$B$72", 72, 2)))
End Sub
Beide Versionen funktionieren, ich bevorzuge da aber dann Variante 1 (xDays).
Meine Erkenntnis, in VBA muss ich halt ein Array immer erst BEFÜLLEN, ist nicht STATISCH definierbat (incl. Werte),
und das war meine einfache Frage.
Danke, und Problem gelöst.