hab mal 'ne allgemeine Frage:
Was macht den Unterschied wenn ich eine Zelle im Excel per VGA mit Cells(1, 1) anspreche statt mit Range("A1")?
Gruß
Gordon
Sub ttt1()
Dim t As Double, i As Long, n
t = Timer
For i = 1 To 50000
n = Cells(i, 1)
Next
MsgBox Timer - t
End Sub
Sub ttt2()
Dim t As Double, i As Long, n
t = Timer
For i = 1 To 50000
n = Range("A" & i)
Next
MsgBox Timer - t
End Sub
Sub ttt3()
Dim t As Double, i As Long, n, vntRng
t = Timer
vntRng = Range(Cells(1, 1), Cells(50000, 1))
For i = 1 To 50000
n = vntRng(i, 1)
Next
MsgBox Timer - t
End Sub
Zellen ansprechen: Du kannst Zellen in Excel VBA entweder über Cells oder Range ansprechen.
Cells(1, 1) greifst du auf die Zelle A1 zu.Range("A1") erreichst du die gleiche Zelle.Schleifen verwenden:
Cells oft einfacher und flexibler:
For i = 1 To 10
Cells(i, 1) = "x"
Next iRange sieht es so aus:
For i = 1 To 10
Range("A" & i) = "x"
Next iSpalten füllen: Wenn du Spalten füllen möchtest, ist Cells ebenfalls die einfachere Wahl:
For i = 1 To 10
Cells(1, i) = "x"
Next i
Fehler: Verwendung von Range in einer Schleife kann komplex sein.
Cells, um den Code einfacher zu gestalten.Fehler: Langsame Ausführung bei Verwendung von Range.
Cells, da es schneller ist. Alternativ kannst du Daten in ein Array laden und damit arbeiten.Array-Methoden: Lade Daten in ein Array für schnellere Zugriffe:
Dim vntRng
vntRng = Range(Cells(1, 1), Cells(50000, 1))
Für jedes Element: Du kannst auch For Each verwenden, um durch Zellen zu iterieren:
For Each cell In Range("A1:A10")
cell.Value = "x"
Next cell
Zellen mit Cells füllen:
Sub FillCells()
For i = 1 To 10
Cells(i, 1).Value = i
Next i
End Sub
Zellen mit Range füllen:
Sub FillRange()
For i = 1 To 10
Range("A" & i).Value = i
Next i
End Sub
Schnelligkeitstest:
Sub SpeedTest()
Dim t As Double, i As Long, n
t = Timer
For i = 1 To 50000
n = Cells(i, 1)
Next
MsgBox "Cells: " & Timer - t
t = Timer
For i = 1 To 50000
n = Range("A" & i)
Next
MsgBox "Range: " & Timer - t
End Sub
Cells für dynamische Zugriffe, insbesondere wenn du Variablen für Zeilen und Spalten benötigst.Range oft die bessere Wahl.1. Was ist schneller, Cells oder Range?
Cells ist in der Regel schneller als Range, da es direkt auf die Zellen zugreift, ohne zusätzliche Interpretation.
2. Kann ich mit beiden Methoden denselben Zellenbereich bearbeiten?
Ja, beide Methoden ermöglichen dir, denselben Zellenbereich zu bearbeiten, jedoch mit unterschiedlichen Ansätzen.
3. Gibt es einen Unterschied in der Verwendung von Cells und Range innerhalb von Schleifen?
Ja, Cells ist oft einfacher zu handhaben, während Range zusätzliche String-Konkatenation erfordert, was den Code komplizierter macht.