如何在 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(名为Sheet2Sheet3的工作表除外)。

以下示例展示了如何在实践中对包含四个空工作表的 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,除了名为Sheet2Sheet3的工作表。

我们可以创建以下宏来执行此操作:

 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

当我们运行这个宏时,我们将看到Sheet1Sheet4在单元格A1中的值为 100。

但是, Sheet2Sheet3在单元格A1中没有值,因为我们使用Case函数忽略这些工作表:

请注意,在这些示例中,为了简单起见,我们已经浏览了每个工作表并将单元格的值设置为等于特定值。

但是,如果您愿意,您可以使用类似的语法与For Each语句来在每个工作表中执行更复杂的任务。

其他资源

以下教程说明如何在 VBA 中执行其他常见任务:

VBA:如何计算范围内的行数
VBA:如何计算具有特定文本的单元格
VBA:如何编写 COUNTIF 和 COUNTIFS 函数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注