在工作簿中的所有工作表上应用相同的VBA代码

我有一个关于VBA的问题。 我正在尝试将下面的代码应用于工作簿中的所有工作表。 工作簿包含大量工作表,但在同一个单元格中包含所有数据点唯一的区别是工作表的名称。 所以基本上“MoneyMarket”只是一张工作簿的名字。 试图使用每张表,但得到了如何应用这种卡住

Dim YRange As Integer, ProjectionRange As Integer Dim XRange As Range Dim I As Integer Sub DrawChart() Set XRange = Sheets("MoneyMarket"). _ Range("R8:R" & Sheets("MoneyMarket").Range("R8").End(xlDown).Row) ProjectionRange = Sheets("MoneyMarket").Range("T54").End(xlDown).Row YRange = Sheets("MoneyMarket").Range("S8").End(xlDown).Row Sheets("MoneyMarket").Range("S8:S" & YRange).Select Charts.Add ActiveChart.Location Where:=xlLocationAsObject, Name:="MoneyMarket" ActiveChart.SeriesCollection.Add Source:=Sheets("MoneyMarket").Range("T8:X" & YRange) ActiveChart.ChartType = xlLine ActiveChart.Axes(xlCategory).Select ActiveChart.SeriesCollection(1).XValues = XRange For I = 2 To 6 ActiveChart.SeriesCollection(I).Select With Selection.Format.Line .DashStyle = msoLineDash End With Next I End Sub 

Google中的一个非常快速的search将为您提供有关如何遍历工作簿中所有工作表的答案。 这只是一个例子

  Dim WS_Count As Integer Dim I As Integer ' Set WS_Count equal to the number of worksheets in the active ' workbook. WS_Count = ActiveWorkbook.Worksheets.Count ' Begin the loop. For I = 1 To WS_Count ' Insert/Modify your code here. It will be applied to each sheet. 'For example to get their names msgbox ActiveWorkbook.Worksheets(I).Name Next I 

如果您对工作簿中某些工作表的循环感兴趣,我build议您使用这样的数组:

 Sub loopAcrossSheets() temp = Array("Sheet1", "Sheet3", "SheetX") For Each SheetName In temp DrawChart (SheetName) Next End Sub 

那么你应该把input的string放在你的Sub:

 Sub DrawChart(SheetName As String) 

最后,用SheetNamereplace表格名称(“MoneyMarket”)! 这适用于我!