Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
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

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

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
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 :-)
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
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
Anzeige
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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige