【问题标题】:VBA code to run applications on all worksheets with name changing in runtimeVBA 代码在运行时更改名称的所有工作表上运行应用程序
【发布时间】:2015-07-16 17:24:59
【问题描述】:

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

我尝试使用代号,但它显示运行时错误 424。

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

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

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

有人可以帮我解决这个问题吗?这是我运行应用程序的(记录的)代码:

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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    工作表可以通过Worksheet.CodeName propertyWorksheet.Name propertyWorksheet.Index propertyWorksheets collection 引用。

    例子:

    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
    

    【讨论】:

    • 谢谢你,吉普德。我现在真正想做的是:循环 tru 2nd 直到第 19 个选项卡,运行应用程序以自动过滤然后复制(我已经有代码),然后最后粘贴到名称为“1”、“2”、“3”的工作表中, ...直到“18”。我不知道如何编写在源工作表上循环的代码(我将在其中复制数据)然后粘贴到特定的工作表中,即第二个 TAB 工作表将被复制到工作表“1”,第三个 TAB 工作表将复制到工作表“2”依此类推,直到 TAB 19th 和工作表“18”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多