如何在 vba 中浏览电子表格(附示例)
您可以使用以下方法通过 VBA 在 Excel 工作簿中导航工作表:
方法一:遍历所有电子表格
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Range("A1").Value = 100
Next ws
End Sub
此特定宏会遍历工作簿中的每个工作表,并将每个工作表的单元格A1中的值设置为 100。
方法 2:浏览所有工作表,排除特定工作表
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Select Case ws.Name
Case Is = "Sheet2", "Sheet3"
'Do not execute any code for these sheets
Case Else
ws.Range("A1").Value = 100
End Select
Next ws
End Sub
此特定宏循环遍历工作簿中的每个工作表,并将每个工作表的单元格A1中的值设置为 100(名为Sheet2和Sheet3的工作表除外)。
以下示例展示了如何在实践中对包含四个空工作表的 Excel 工作簿使用这些方法:
示例 1:浏览所有工作表
我们可以使用以下宏将工作簿中每个工作表上单元格A1的值设置为等于 100:
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Range("A1").Value = 100
Next ws
当我们运行这个宏时,工作簿每个工作表中单元格A1的值将等于 100:
示例 2:浏览所有工作表,不包括特定工作表
假设我们想要遍历每个工作表并将每个工作表中单元格A1的值设置为 100,除了名为Sheet2和Sheet3的工作表。
我们可以创建以下宏来执行此操作:
SubLoopSheets ()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Select Case ws.Name
Case Is = "Sheet2", "Sheet3"
'Do not execute any code for these sheets
Case Else
ws.Range("A1").Value = 100
End Select
Next ws
End Sub
当我们运行这个宏时,我们将看到Sheet1和Sheet4在单元格A1中的值为 100。
但是, Sheet2和Sheet3在单元格A1中没有值,因为我们使用Case函数忽略这些工作表:
请注意,在这些示例中,为了简单起见,我们已经浏览了每个工作表并将单元格的值设置为等于特定值。
但是,如果您愿意,您可以使用类似的语法与For Each语句来在每个工作表中执行更复杂的任务。
其他资源
以下教程说明如何在 VBA 中执行其他常见任务:
VBA:如何计算范围内的行数
VBA:如何计算具有特定文本的单元格
VBA:如何编写 COUNTIF 和 COUNTIFS 函数