Wenn ich den folgenden CodeWas ist der Unterschied zwischen .Value = "" und .ClearContents?
Sub Test_1()
Cells(1, 1).ClearContents
Cells(2, 1).Value = ""
End Sub
laufe Wenn ich Zellen überprüfen (1, 1) und Zellen (2, 1) unter Verwendung der Formel ISBLANK()
beiden Ergebnisse zurück TRUE. Also ich frage mich:
Was ist der Unterschied zwischen
Cells(,).Value = ""
und ?
Sind sie im Wesentlichen gleich?
Wenn ich dann den folgenden Code ausführen, um die Zeitdifferenz zwischen den Methoden zu testen:
Sub Test_2()
Dim i As Long, j As Long
Application.ScreenUpdating = False
For j = 1 To 10
T0 = Timer
Call Number_Generator
For i = 1 To 100000
If Cells(i, 1).Value/3 = 1 Then
Cells(i, 2).ClearContents
'Cells(i, 2).Value = ""
End If
Next i
Cells(j, 5) = Round(Timer - T0, 2)
Next j
End Sub
Sub Number_Generator()
Dim k As Long
Application.ScreenUpdating = False
For k = 1 To 100000
Cells(k, 2) = WorksheetFunction.RandBetween(10, 15)
Next k
End Sub
ich die folgende Ausgabe für Runtime auf meinem Rechner
.ClearContents .Value = ""
4.20 4.44
4.25 3.91
4.18 3.86
4.22 3.88
4.22 3.88
4.23 3.89
4.21 3.88
4.19 3.91
4.21 3.89
4.17 3.89
erhalten auf diese Basierend Ergebnisse, sehen wir, dass die Methode .Value = ""
im Durchschnitt schneller als .ClearContents
ist. Trifft das überhaupt zu? Warum?
ich denke, true zurück Du hast mit deinen Timing-Tests den Nagel auf den Kopf getroffen nts ist nützlich, wenn eine Zahlenformatierung beibehalten werden soll, die von der leeren Zeichenfolge überschrieben werden kann. Vielleicht gibt es mehr Nuancen als das, aber wenn dem so ist, bin ich mir dessen nicht bewusst. – RGA
'.Value =" "' setzt nur eine Nulllänge in die Zelle, also schreibst du einfach einen neuen Wert darauf (_Es ist technisch nicht leer ..._) '.ClearContents' entfernt tatsächlich den' .Value' der Zelle, von dem ich mir ein bisschen mehr Overhead in Sachen Speicherverwaltung vorstelle. –
@MacroMan Mit Mathe Analogie, implizieren Sie, dass '.Value =" "ist gleich 0 und' .ClearContents' ist gleich einem leeren Satz? Wie auch immer, danke RGA für die Bearbeitung meiner Frage. –