我试图让我的宏运行得更快,我想知道哪种方式最快:
1)
Set cell2 = Range("F" & CurrentRow)
Set Columns = Range(cell2, cell2.Offset(0, LastColumn - 6))
i = 0
For Each cell In Columns
If cell.Value = " - " Then
Else
...code...
Next cell
2)
Set cell2 = Range("F" & CurrentRow)
CurrentColumn=6
While CurrentColumn <= LastColumn
Cells(CurrentColumn,CurrentRow).Value...code...
CurrentColumn = CurrentColumn+1
Wend
还有比这两个更快的方法吗?
提前致谢, 布鲁诺
答案 0 :(得分:2)
循环范围的最快方法是将其转储到变量中并循环遍历。每次从VBA调用Excel都会很昂贵(虽然只有大数据才能显示)并且通过变量循环很快。
示例代码
Sub test()
Dim data As Variant
Dim i As Long, j As Long
'Example range
data = Range("A1:Z100").Value
For i = LBound(data, 1) To UBound(data, 1)
For j = LBound(data, 2) To UBound(data, 2)
If data(i, j) = " - " Then
'Do something
End If
Next
Next
End Sub
答案 1 :(得分:1)
为了加速更新大量单元格中的值的VBA代码,您可以做的最好的事情是在代码之前添加以下行:
Application.ScreenUpdating = False
那你的代码;最后
Application.ScreenUpdating = True
您会惊讶地发现代码的运行速度会快得多。此外,当宏运行时,屏幕不会闪烁。