Вы можете написать подпрограмму, которая вызывает ваш макрос для всех ваших листов, например:
Sub ProcessAllSheets()
numberOfSheets = 10 ' Or whatever
' Loop through all sheets
For i = 1 To numberOfSheets
sheetName = "S" & i ' sheetName will be "S1" when i=1, "S2" when i=2 etc.
Call Macro_2(sheetName)
Next i
End Sub
или только один лист за раз:
Sub ProcessOneSheet()
sheetName = "S7"
Call Macro_2(sheetName)
End Sub
Вашему макросу потребуется небольшое редактирование, чтобы принять аргумент sheetName
:
Sub Macro_2(sheetName)
' Macro_2 is not a very useful name...
' Call it something more descriptive!
CS = sheetName
' CS isn't a very good variable name either...
' Why not just replace CS with e.g. sheetName
'Macro code goes here...
End Sub
NB. Большинство программистов советуют вам избегать переменных Public
, если только вы не знаете, что это лучший способ решить вашу проблему (чего не происходит в вашем случае). Public
a.k.a. глобальные переменные часто приводят к трудным для поиска ошибкам.