Hallo Frank,
Nein, natürlich nicht. Es gibt ein Range-Objekt zurück, das die Zellen
im entsprechenden Bereich enthält.Das ist aber nicht Vergleichbar mit einem PHP-Objekt, oder? Auch wenn ich das mit For Each durchlaufen kann und wie bei einem Array mit my_Array(3) auch my_Range_Objekt(3) den Wert abrufen.
es gibt viele Dinge, die man mit For Each durchlaufen kann und die kein Array sind, z.B. Collections, Dictionaries und in Excel halt eben auch ein Range-Objekt.
Wie denn umwandeln des Objekt-Ranges in ein Array frag ick mir.
In BASIC musst Du ein Array anlegen. Dabei musst Du den Datentyp angeben, den
Dein Array aufnehmen soll (oder es ist halt Variant, dann kannst Du alles reinpacken - Nein, ich halte das nicht für eine gute Idee.)
Beispiel:
Dim myArray(9) As Integer
erstellt ein Array mit einer bestimmten Anzahl (ja wievielen denn) von "Zeilen", auf die Du über ihren Index zugreifen kannst.
Mit der Option-Base-Anweisung zu Beginn des Moduls regelst Du, ob die
Indizierung mit 0 (bei VBA Standard) oder mit 1 beginnt.
Arrays (Suchwort: Datenfelder) können in der Größe verändert werden, dazu dient die ReDim-Anweisung. ReDim Preserve sorgt dafür, dass die Daten dabei
erhalten bleiben.
Lege also ein Array an, redimensioniere auf die Anzahl der Spalten.
Weise jedem Arrayelement den Inhalt der Text-Eigenschaft einer Zelle zu.
Ach so:
Über debug.print kannst Du Dir bei formatierten Zellen, z.B. mit Währungsformat, mal den Unterschied zwischen
cell.Text und cell.Value
anzeigen lassen.
Freundliche Grüße
Vinzenz