AW: Bereichsdefinition, was ist falsch?
17.11.2007 15:32:09
Daniel
HI
Ich habe gelernt, dass [sollhaben] die Kurzform ist von Range("sollhaben").
Diese Schreibweise ist kurz und es ist klar, dass es sich um einen benannten Range handelt.
Da hast du was nicht ganz korrektes gelern:
[] ist [xxx] die Kurzschreibweise für EVALUATE ist, was soviel bedeutet wie "Berechnen".
beispielsweise hat "[1+2]" das Ergebnis 3.
Zwar funktioniert [] als Ersatz für die RANGE- oder CELLS- Schreibweise, aber man sollte es trotzdem nicht benutzen, weils ja nicht ganz korrekt und darüber hinaus noch langsamer als die Range- oder Cells-Schreibweise.
kann man hiermit testen:
Sub test()
Dim Zeit As Double, Erg1 As Double, Erg2 As Double, Erg3 As Double
Dim Erg As String
Dim i As Long, Schleifen As Long
Schleifen = 2000
[a1].Clear
'--- Speedtest []
Zeit = Timer
For i = 1 To Schleifen
[a1] = [a1]
Next
Erg1 = Round(Timer - Zeit, 3)
'--- Speedtest Range
Zeit = Timer
For i = 1 To Schleifen
Range("a1") = Range("A1")
Next
Erg2 = Round(Timer - Zeit, 3)
'--- Speedtest cells
Zeit = Timer
For i = 1 To Schleifen
Cells(1, 1) = Cells(1, 1)
Next
Erg3 = Round(Timer - Zeit, 3)
'--- Ergebnis
Erg = "Zeit für []: "
Erg = Erg & Format(Erg1, "0.000 ") & Format(Erg1 / Erg1, "0%")
Erg = Erg & Chr(10) & "Zeit für Range: "
Erg = Erg & Format(Erg2, "0.000 ") & Format(Erg2 / Erg1, " 0%")
Erg = Erg & Chr(10) & "Zeit für Cells: "
Erg = Erg & Format(Erg3, "0.000 ") & Format(Erg3 / Erg1, " 0%")
MsgBox Erg
End Sub
Gruß, Daniel