如何在 excel 中使用 vba 迭代所有工作表?
有两种方法可以浏览工作簿中的所有工作表。
- 对于下一个循环
- 适合每条卷发
1.使用for每个循环
如您所知,使用 FOR EACH 您可以迭代集合和工作簿中的所有对象,工作表是所有工作表的集合。
使用以下步骤:
- 首先,声明一个变量来引用循环的工作表。
- 之后,使用关键字“Foreach”开始循环,并引用工作簿中的每个工作表。
- 现在假设您要在每个工作表的单元格 A1 中输入一个值,您可以使用如下编写代码。
- 最后,使用“End”关键字结束循环。
有用的链接:运行宏–宏记录器– Visual Basic 编辑器–个人宏手册
Sub vba_loop_sheets() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Range("A1").Value = "Yes" Next ws End Sub
此代码遍历每个工作表并在每个工作表的单元格 A1 中输入值。使用此方法的优点是它会遍历工作簿中的所有工作表。
如果您想浏览关闭的工作簿中的所有工作表,请使用如下代码。
Sub vba_loop_sheets() Dim wb As Workbook Dim ws As Worksheet Application.DisplayAlerts = False Set wb = Workbooks.Open("C:UsersDellDesktopsample-file.xlsx") For Each ws In wb.Worksheets ws.Range("A1").Value = "Done" Next ws wb.Close SaveChanges:=True Application.DisplayAlerts = True End Sub
2.使用For Next循环
您还可以使用FOR NEXT循环进行循环,其中您可以使用工作表的数量来决定要执行的循环次数,并使用循环计数器来引用每张工作表。
以下是您需要遵循的步骤:
- 首先,您需要声明两个变量来存储循环的计数值,另一个变量用于存储工作簿中的工作表数量。
- 现在,将“shtCount”变量的值设置为等于工作簿中的工作表数。
- 之后,使用关键字“For i”开始循环代码,并使用循环计数器的最大值的叶计数。
- 从这里开始,您需要使用循环计数器遍历所有工作表,并在每个工作表的单元格 A1 中输入值“是”。
完整代码
Sub vba_loop_sheets() Dim i As Long Dim shtCount As Long shtCount = Sheets.Count For i = 1 To shtCount Sheets(i).Range("A1").Value = "Yes" Next i End Sub
如果您想浏览关闭的工作簿,请使用以下代码。
Sub vba_loop_sheets() Dim i As Long Dim shtCount As Long Set wb = Workbooks.Open("C:UsersDellDesktopsample-file.xlsx") shtCount = wb.Sheets.Count Application.DisplayAlerts = False For i = 1 To shtCount wb.Sheets(i).Range("A1").Value = "Yes" Next i wb.Close SaveChanges:=True Application.DisplayAlerts = True End Sub