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 i
Range
sieht es so aus:
For i = 1 To 10
Range("A" & i) = "x"
Next i
Spalten 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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen