Sie kennen sicherlich den gewohnten Umgang (schreiben und lesen) mit Array-Variablen. Normalerweise wird jeder Eintrag der Array-Variable einzeln referenziert.
Sub Normales_Array() '** Dimensionierung der Variablen Dim strArray(5, 3) '5 Zeilen, 3 Spalten '** Elemente in Array schreiben For a = 1 To 5 For b = 1 To 3 '** Element in Array schreiben strArray(a, b) = Cells(a, b).Address Next b Next a '** Auslesen der Array-Variable '** Beispiel: Element 3,2 auslesen = Zeile 3, Spalte 2 also Adresse B3 MsgBox strArray(3, 2) End Sub
Das folgende Beispiel zeigt, wie sich ein ganzer Zellbereich in einer Array-Variable ablegen und auslesen lässt, ohne dass jedes einzelne Array-Element einzeln zum Auslesen referenziert werden muss. Damit können Array-Inhalte sehr schnell ohne For-Next-Schleifen in einem Zellbereich ausgegeben werden.
Wichtig ist, dass der eingelesene Zellbereich absolut mit dem Ausgabebereich identisch ist, d.h. beide Bereiche müssen die gleiche Größe (Anzahl Zeilen und Spalten) haben.
Sub Gesamtes_Array_schreiben() '*************************************************************************************** ' Module : Modul1 ' Author : Alois Eckl ' Purpose : Array-Bereich direkt in Zell-Bereich schreiben '*************************************************************************************** '** Dimensionierung der Variablen Dim arrTotal, strAdr As String Dim lngZeile As Long Dim lngSpalte As Long '** Bereich löschen Range("B5:H30").ClearContents '** Array definieren arrTotal = Range("B5:H30") For lngZeile = 1 To 26 '** Zeilen 5 bis 30 For lngSpalte = 1 To 7 '** Spalten B bis H '** Zelladresse auslsen strAdr = Cells(lngZeile + 4, lngSpalte + 1).Address '** Array aktualisieren arrTotal(lngZeile, lngSpalte) = strAdr Next lngSpalte Next lngZeile '** Gesamten Array-Bereich schreiben Range("B5:H30") = arrTotal End Sub