VBA 遍历工作表

Workbook对象的Worksheets属性(最后多一个s)包含工作簿对象中的所有工作表;

通过For Each或For To进行遍历,获取每一个Woksheet。


示例:

Excel程序打开了Excel文件: D:\小步教程1.xlsx。

其中包含三个工作表:Sheet1、Sheet2、Sheet3。


第1种遍历方式:For Each

Sub sub1_1()

  Dim wb As Workbook
  Dim ws As Worksheet

  '获取Workbook对象
  Set wb = Workbooks("小步教程1.xlsx")
  '通过Workbooks.Worksheets遍历工作表
  For Each ws In wb.Worksheets
    Debug.Print ws.Name
  Next

End Sub

wb.Workbooks:工作簿的工作表的集合。

Worksheet.Name:工作表的名称。

输出结果:

Sheet1
Sheet2
Sheet3

Worksheets,表示当前工作簿的所有工作表。

Sub sub1_2()

  Dim ws As Worksheet
  For Each ws In Worksheets
    Debug.Print ws.Name
  Next

End Sub

输出结果不确定。

如果当前工作簿是 小步教程1.xlsx,则结果相同。

如果同时打开多个工作簿,选择当前工作簿为B.xlsx,则结果为B.xlsx中的表单名称。


第2种遍历方式:For To

Sub sub2()
  Dim wb As Workbook
  Dim ws As Worksheet
  Dim i As Integer
 
  Set wb = Workbooks("小步教程1.xlsx")

  'Count属性返回工作表的数量
  For i = 1 To wb.Worksheets.Count
    'Item(i)属性获取工作表
    Debug.Print wb.Worksheets.Item(i).Name
  Next

End Sub

Worksheets.Count:工作表集合中的元素个数。

Worksheets.Item(i):获取工作表集合中的第i个工作表。下标从1开始。