VBA代码在运行时更改名称的所有工作表上运行应用程序

这里是显示所有工作表的项目浏览器。 worksheet1-19是原始的工作表和19-37是我添加的工作表。

我试图使用代码名称,但它显示运行时错误424。

我目前正在从一个工作簿打开文件从相同的文件夹,并添加到特定的工作簿(已经有19个工作表)

现在,打开文件并将其添加到工作簿后,我想运行一个应用程序(即我logging)添加到工作簿的新工作表。

问题是logging的应用程序会记住我添加的以前工作表的工作表名称。 这意味着,当我将新工作表添加到工作簿时,应用程序不会运行。

有人可以帮我吗? 这里是我的(logging)代码来运行该应用程序:

Sub magic() ' ' magic Macro ' ' Keyboard Shortcut: Ctrl+q ' Sheets("Result_MTY6015_2_4A_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("1").Range("A1").Paste Sheets("Result_MTY5915_2_3A_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("2").Range("A1").Paste Sheets("Result_MTY5015_2_5D_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("3").Range("A1").Paste Sheets("Result_MTY5015_2_4B_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("4").Range("A1").Paste Sheets("Result_MTY3415_3_1_1B_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("5").Range("A1").Paste Sheets("Result_MTY3415_2_6_1A_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("6").Range("A1").Paste Sheets("Result_MTY3115_2_1E_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("7").Range("A1").Paste Sheets("Result_MTY3115_2_1D_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("8").Range("A1").Paste Sheets("Result_MTY3015_3_2G_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("9").Range("A1").Paste Sheets("Result_MTY2615_3_2E_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("10").Range("A1").Paste Sheets("Result_MTY2615_3_2A_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("11").Range("A1").Paste Sheets("Result_MTY2515_2_5E_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("12").Range("A1").Paste Sheets("Result_MTY2315_2_5B_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("13").Range("A1").Paste Sheets("Result_MTY2215_3_3_1A_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("14").Range("A1").Paste Sheets("Result_MTY2015_2_6G_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("15").Range("A1").Paste Sheets("Result_MTY1615_3_3_1B_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("16").Range("A1").Paste Sheets("Result_MTY1415_3_1F_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("17").Range("A1").Paste Sheets("Result_MTY0315_2_7C_N").Select Application.Run "PERSONAL.XLSB!filtercopy" Sheets("18").Range("A1").Paste Sheets("result").Select End Sub 

工作表可以通过Worksheet集合的Worksheet.CodeName属性 , Worksheet.Name属性或Worksheet.Index属性进行引用。

例子:

 dim w as long for w = 1 to worksheets.count with worksheets(w) 'do something with each worksheet end with next w worksheets.add after:=worksheets(worksheets.count) with worksheets(worksheets.count) 'do something with the new last worksheet end with worksheets.add before:=worksheets(1) with worksheets(1) 'do something with the new first worksheet end with with worksheets("Sheet1") 'do something with the worksheet named Sheet1 on the sheet tab in the application window end with with Sheet1 'do something with the worksheet labeled Sheet1 in the Project Explorer end with