我正在为
目前的工作簿中的某些工作表重复一组操作For Each ws In Worksheets
Select Case ws.Name
Case "2015", "2016", "Rate", "Month"
'code here
End Select
Next ws
这似乎非常低效的XD 是否可以做类似
的事情With ws1, ws2, ws3
'code here
end with
我没有那么多张,所以循环只需要约2秒但是必须有更快/更优雅的方式?
答案 0 :(得分:2)
工作表是一个包含当前工作簿中所有工作表的集合。
为简化代码,您可以只使用要处理的工作表创建自己的集合,然后使用它。那么你就不需要select case语句来限制循环处理哪些工作表。
但是,查看集合可能比按照您的方式执行更多工作。虽然这不是OO的方式。
所以在一个模块中你可能会做这样的事情:
Sub aa()
Dim colSheets As Collection
Set colSheets = New Collection
colSheets.Add Sheet1 ' here I use the object name from the VBA "(Name)" property
colSheets.Add Worksheets("MyWorksheetName")
colSheets.Add Worksheets("SummarySheet")
Dim sht As Worksheet
For Each sht In colSheets
Debug.Print sht.Name
Next sht
Set colSheets = Nothing
End Sub