【发布时间】:2021-03-15 09:47:37
【问题描述】:
如何避免在我的宏中使用选择/激活(以帮助加快速度)?
宏遍历工作表上的每一行;如果 QTY 大于零(在 C 列中),则它调用另一个宏来打开特定工作簿(A 列中的工作簿名称),进行一些更改,然后关闭该工作簿。
Sub Update_All_Workbooks()
Dim LastRow As Long
Dim DataRange As Range
Dim WB As Workbook
Dim WS As Worksheet
Set WB = ActiveWorkbook
Set WS = ActiveSheet
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Set DataRange = Sheets("TestA").Range("A3:A" & LastRow)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
WB.Sheets("TestA").Activate
Range("C3").Select
For Each Row In DataRange
If ActiveCell > 0 Then
Call Open_Update_Close_WB
WB.Sheets("TestA").Activate
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Next Row
WS.Activate
End Sub
【问题讨论】:
-
您的
Open_Update_Close_WB似乎也依赖于当前的活动单元格,在这种情况下,您需要同时修复它们。 -
你能把
Open_Update_Close_WB的代码也贴出来 -
在我们等待其他代码时,如果您在代码中关闭
ScreenUpdating和DisplayAlerts,您需要在结束前重新打开它们。