Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Erst jetzt gemerkt: bin Array-Anfänger

Forumthread: Erst jetzt gemerkt: bin Array-Anfänger

Erst jetzt gemerkt: bin Array-Anfänger
31.10.2022 19:39:31
NicSteel
Liebes Forum,
Geständnis: seit ca. 10 Jahren arbeite / spiele ich mit VBA. Mit Arrays (auch 3D) kann ich umgehen. Ein Array mit Schleife und Range füllen und ausgeben - alles kein Problem ... Seit heute weiss ich: es mangelt an den Grundlagen.
Ich möchte im Code ein 2D-Array mit Werten anlegen. So soll es z.B. aussehen:
1 , 8 , 42
2 , 7 , 62
3 , 5 , 38
Habe es probiert zum Schluss versucht mit :

Dim Tabelle as Variant
Redim Tabelle (0 to 2, 0 to 1)
Tabelle=Array( (1,2,3) , (8,7,5) , (42,62,38) )
Alles erfolglos, habe recherchiert - nirgendwo etwas gefunden (nur blöde Stringlisten - und dann auch nicht als 2D).
Liebes Forum - bitte klärt mich auf ... und lacht nicht über micht !
Dank & Gruß
NicSteel
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erst jetzt gemerkt: bin Array-Anfänger
31.10.2022 20:48:56
GerdL
Moin Nic,
schaue dir das Lokalfenster an.

Sub a()
Dim X As Integer, Y As Integer
Dim Tabelle
Tabelle = Array(Array(1, 2, 3), Array(8, 7, 5), Array(42, 62, 38))
For X = 0 To 2
For Y = 0 To 2
MsgBox Tabelle(X)(Y)
Next
Next
End Sub
Sub b()
Dim X As Integer, Y As Integer
Dim Tabelle(2)
Tabelle(0) = Array(1, 2, 3)
Tabelle(1) = Array(8, 7, 5)
Tabelle(2) = Array(42, 62, 38)
For X = 0 To 2
For Y = 0 To 2
MsgBox Tabelle(Y)(X)
Next
Next
End Sub
Gruß Gerd
Anzeige
AW: Erst jetzt gemerkt: bin Array-Anfänger
31.10.2022 21:15:20
NicSteel
Hallo Gerd,
vielen Dank für deinen Tip mit dem Array(Array(),...) !
Das "Im-Code-Einlesen" funktioniert nun.
Aber aus irgendeinem Grund kann ich nicht auf einzelne Datenfelder zugreifen.

Cells(1,1) = Tabelle(2, 2)
-> Stimmt schon wieder was mit der Synthax nicht?
Grüße aus Mannheim,
NicSteel
Anzeige
AW: Erst jetzt gemerkt: bin Array-Anfänger
31.10.2022 21:22:02
ralf_b
du solltest schon genauer hinsehen. deine Frage wurde schon beantwortet.
z.b. MsgBox Tabelle(Y)(X) und nicht Tabelle(Y,X)
AW: Erst jetzt gemerkt: bin Array-Anfänger
31.10.2022 21:35:10
GerdL
Hajooo,
zwische Necker un Roi lässt sichs gud soi.
Die sind doppelt "arraysiert", deshalb

Cells(1,1)= Tabelle(2)(2)
Gruß Gerd :-)
Anzeige
AW: Erst jetzt gemerkt: bin Array-Anfänger
31.10.2022 21:48:47
NicSteel
Hallo Gerd und ralf,
... ich versteh's nich !
Der letzte Hinweis von Gerd (doppelt arraysiert) hat mich doch stutzig gemacht - vielleicht habe ich meine Frage nicht präzise gestellt:
Das erste Array sollte die "Zeilen" von Tabelle darstellen und die beiden nächsten Arrays verschiedene "Spalten"-Werte.
Könnt ihr da bitte nochmal drüber schauen ... ?
Vielen Dank schon mal im Voraus,
NicSteel
Anzeige
AW: Erst jetzt gemerkt: bin Array-Anfänger
31.10.2022 22:12:19
GerdL
Hallo Nic,
in der Tabelle heißt das Transponieren.

Sub c()
Dim vnt As Variant
Range("A2:C2") = Array(1, 2, 3)
Range("A3:C3") = Array(8, 7, 5)
Range("A4:C4") = Array(42, 62, 38)
vnt = Range("A2:C4").Value
Range("E2:G4") = WorksheetFunction.Transpose(vnt)
End Sub
Gruß Gerd
Anzeige
AW: Erst jetzt gemerkt: bin Array-Anfänger
31.10.2022 23:09:55
NicSteel
So GerdL: Vielen Dank für dein Verständnis und deine Geduld.
Der Transpose-Befehl war genau richtig - jetzt kann ich mit dem Array so arbeiten, wie ich es gewohnt bin.
Toll, dass du mir geholfen hast !
"Schöner Tag" (so sagt man bei uns in MA):
NicSteel
Da würd ich dem MA'er antworten: "Find ich auch".
01.11.2022 07:41:55
lupo1
AW: Erst jetzt gemerkt: bin Array-Anfänger
31.10.2022 22:18:13
Rudi
Hallo,
wenn du eine Tabelle als Array darstellen willst, solltest du den kleinsten Index auch bei 1 anfangen lasse, weil eine Tabelle immer eine 1. Zeile und eine 1. Spalte hat.
Außerdem hast du eine 3x3-Matrix
Ergo
Dim Tabelle(1 To 3, 1 To 3)
Jetzt wird's lustig:

Sub aaa()
Dim Quelle(1 To 3)
Dim Tabelle(1 To 3, 1 To 3)
Dim r As Integer, s As Integer
Quelle(1) = Array(, 1, 2, 3)
Quelle(2) = Array(, 8, 7, 5)
Quelle(3) = Array(, 42, 62, 38)
For r = 1 To 3
For s = 1 To 3
Tabelle(r, s) = Quelle(r)(s)
Next s
Next r
End Sub
Gruß
Rudi
Anzeige
;

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