Ana*_*a 秀 11 syntax excel vba excel-vba difference
如果我运行以下代码
Sub Test_1()
Cells(1, 1).ClearContents
Cells(2, 1).Value = ""
End Sub
Run Code Online (Sandbox Code Playgroud)
当我使用公式检查单元格(1,1)和单元格(2,1)时,ISBLANK()两个结果都返回TRUE.所以我想知道:
Cells( , ).Value = ""和之间有什么区别Cells( , ).ClearContents?
它们基本相同吗?
如果我然后运行以下代码来测试方法之间的时差:
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
Run Code Online (Sandbox Code Playgroud)
我在我的机器上获得运行时的以下输出
.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
Run Code Online (Sandbox Code Playgroud)
基于这些结果,我们发现该方法.Value = ""比.ClearContents平均速度快.一般来说这是真的吗?为什么这样?
根据我的发现,如果您的目标是简单地拥有一个空单元格并且您不想更改有关格式的任何内容,那么您应该使用 Value = vbNullString 因为这是最有效的。
“ClearContents”正在检查和更改单元格中的其他属性,例如格式和公式(从技术上讲,这是与值不同的属性)。当使用 Value = "" 时,您只更改一个属性,因此速度更快。使用 vbNullString 会提示编译器您正在使用空字符串,而使用双引号的其他方式则需要通用字符串。因为 vbNullString 提示它需要一个空字符串,所以它能够跳过一些步骤,从而获得性能提升。
| 归档时间: |
|
| 查看次数: |
1187 次 |
| 最近记录: |