对于variables= SheetName1到SheetName2

Sub my_code_sht1() Sheets("Sht1").select '------------------ '------MY CODE----- '------------------ End sub Sub my_code_sht2() Sheets("Sht2").select '------------------ '------MY CODE----- '------------------ End sub 

“我的代码”和我的2分组完全一样。 现在我想知道是否可以像这样重新组合这两段代码:

 Sub my_code() For string = "Sht1" to "Sht2" Sheets("string").select '------------------ '------MY CODE----- '------------------ Next string End sub 

是这样的可能吗? 提前致谢

这是一种方法,不是你需要select每张纸

 Sub my_code() Dim ws As Worksheet For Each ws In Sheets(Array("Sht1", "Sht2")) ws.Select 'code Next ws End Sub 

或者,您可以将代码提取到自己的子例程中,并将表名称作为parameter passing,也可以使用ParamArray传递可变数量的表名称。

 Sub my_code_sht1() ProcessWorkSheet "Sht1" ProcessWorkSheet "Sht2" ProcessWorkSheetsArray "Sht1", "Sht2" End Sub Sub ProcessWorkSheet(SheetName As String) Sheets(SheetName).Select '------------------ '------MY CODE----- '------------------ End Sub Sub ProcessWorkSheetsArray(ParamArray SheetNames()) Dim vName As Variant For Each vName In SheetNames Sheets(vName).Select '------------------ '------MY CODE----- '------------------ Next End Sub 

这是array和for循环的另一个选项。 它不用于每个,但它检查数组的长度:

 Sub my_code() dim arr_names as variant dim l_counter as long arr_names = Array("Sht1", "Sht2", "Sht3") for l_counter = lbound(arr_names) to ubound(arr_names) sheets(arr_names(l_counter)).select 'code next l_counter end sub 

如果你应用相同的代码,那么首先“

 Sub DoWithSheet(wks As Worksheet) ' Code for the Worksheet Debug.Print wks.Name ' and more End Sub 

然后只有两张

 DowithSheet Sheets("Sht1") DoWithSheet Sheets("Sht2")