excel VBA试图让我的宏运行得更快

时间:2013-05-16 00:07:22

标签: vba excel-vba excel

我试图让我的宏运行得更快,我想知道哪种方式最快:

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

还有比这两个更快的方法吗?

提前致谢, 布鲁诺

2 个答案:

答案 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

您会惊讶地发现代码的运行速度会快得多。此外,当宏运行时,屏幕不会闪烁。