habe mal ein paar Fragen zu Array's.
1. Verständnis (so zur Aufwärmung ;-) )
Prinzipiell funktioniert
Sub t3()
Dim arrDame
arrDame = Sheets(1).Range(Cells(1, 1), Cells(iDim, iDim))
Sheets(1).Range(Cells(iDim + 1, 1), Cells(2 * iDim, iDim)) = arrDame
End Sub
Warum nicht folgendes?
Sub t4()
Dim arrDame(iDim - 1, iDim - 1)
Dim iX, iY As Integer
'funktioniert nicht
arrDame = Sheets(1).Range(Cells(1, 1), Cells(iDim, iDim))
Einlesen mit For-Schleifen funktioniert hier, klar, aber wieso kann ich dann am Ende der Schleife arrDame direkt in ein Range schreiben?
Sub t4()
Dim arrDame(iDim - 1, iDim - 1)
Dim iX, iY As Integer
'so funktionierts
For iX = 0 To iDim - 1
For iY = 0 To iDim - 1
arrDame(iX, iY) = Sheets(1).Cells(iX + 1, iY + 1)
Next
Next
Sheets(1).Range(Cells(iDim + 1, 1), Cells(2 * iDim, iDim)) = arrDame
End Sub
2. Performance
Habe bisher die folgenden eigentlich simplen Operationen entsprechend mit For...Next-Schleifen gelöst, komme aber jetzt an ein Performanceproblem. (im Array treten nur die Zahlen 0,1,2,3 auf)
a) alle Werte außer "2" auf "0" setzen
b) ganze Spalte, Zeile, Diagonale mit einem Wert belegen
c) ganzes Array oder Teil des Arrays (insb. Spalte/Zeile) einem anderen Array zuweisen
d) letztes Auftreten eines Wertes finden
e) Transponieren
f) Spiegeln/Rollieren des Arrays (hier evtl. auch nur mit Werten "0" und "1")
g) 2 Array's Zellweise addieren/multiplizieren...
Also alles relativ simpel. Gibt es hierfür performantere VBA-Befehle? Oder evtl. schon vorgefertigte Objekte/Klassen in VBA?
Besten Dank vorab für die Antwort.
LG Harry