Excel 如何创建一个宏并顺次运行多个宏?

Excel 如何创建一个宏并顺次运行多个宏?,excel,vba,excel-2010,record,Excel,Vba,Excel 2010,Record,我有一个excel工作簿,在五张不同的工作表上记录了五个不同的宏。是否可以创建另一个宏并按顺序运行这五个宏 困难在于没有为每个工作表指定这些宏。我每次都必须手动运行这些宏 任何想法都很感激!谢谢。如中所述:VBA中的多线程不能以本机方式完成 无法使用VBA以本机方式完成。VBA构建在一个单线程单元中。获取多个线程的唯一方法是在VBA以外的具有COM接口的其他对象中构建DLL,并从VBA调用它 因此,同时运行所有5个宏将需要大量工作 但OP在评论中提到,可以选择按顺序运行所有5个宏 您可以做的是:

我有一个excel工作簿,在五张不同的工作表上记录了五个不同的宏。是否可以创建另一个宏并按顺序运行这五个宏

困难在于没有为每个工作表指定这些宏。我每次都必须手动运行这些宏

任何想法都很感激!谢谢。

如中所述:VBA中的多线程不能以本机方式完成

无法使用VBA以本机方式完成。VBA构建在一个单线程单元中。获取多个线程的唯一方法是在VBA以外的具有COM接口的其他对象中构建DLL,并从VBA调用它

因此,同时运行所有5个宏将需要大量工作

但OP在评论中提到,可以选择按顺序运行所有5个宏

您可以做的是:

  • 添加一个新模块
  • 在此模块中添加新的公用子系统
  • 引用此子对象中的所有宏名称
  • 此宏的外观示例如下:

    Public Sub allMacros()
        macroName1
        macroName2
        macroName3
        Sheet1.macroNameNotUnique
        Sheet2.macroNameNotUnique
    End Sub
    
    现在运行此宏将按顺序运行所有指定的宏。

    如中所述:VBA中的多线程处理不能以本机方式完成

    无法使用VBA以本机方式完成。VBA构建在一个单线程单元中。获取多个线程的唯一方法是在VBA以外的具有COM接口的其他对象中构建DLL,并从VBA调用它

    因此,同时运行所有5个宏将需要大量工作

    但OP在评论中提到,可以选择按顺序运行所有5个宏

    您可以做的是:

  • 添加一个新模块
  • 在此模块中添加新的公用子系统
  • 引用此子对象中的所有宏名称
  • 此宏的外观示例如下:

    Public Sub allMacros()
        macroName1
        macroName2
        macroName3
        Sheet1.macroNameNotUnique
        Sheet2.macroNameNotUnique
    End Sub
    


    现在运行此宏将按顺序运行所有指定的宏。

    通过“同时”您的意思是它们必须同时运行,还是宏按顺序运行可以?因为严格来说,不能同时运行,使用单线程vba是可能的……在一个普通模块中使用五个不同的宏引用五张表并从那里调用它们会更容易。嗨@GTPV,这对我来说很有用。@Darren Bartrup Cook,因为我记录了这些宏的格式,所以代码非常大。通过“同时”你的意思是它们必须同时运行,还是宏可以按顺序运行?因为严格来说,单线程vba不可能同时运行…在一个普通模块中使用五个不同的宏,引用五个工作表并从那里调用它们会更容易。Hi@GTPV,达伦·巴特鲁普·库克,因为我记录了这些宏的格式,所以代码非常大。非常感谢。答案对我有帮助!你知道,我假设宏在
    工作表
    模块中,这些模块是
    私有的
    ,所以这种方法不起作用-但是OP记录了宏,这些宏会自动将它们放入普通模块中。。。我应该更彻底地阅读这些问题。Hi@GTPV,我对Sheet1.macroNameNotUnique有点困惑,“macroNameNotUnique”的输入应该是什么?@Boomshakalaka很高兴我能帮上忙。如果宏不需要输入,则在调用宏时应该没有输入。如果某些宏没有唯一的名称,则首先需要指定宏所在模块的名称。例如:“module1.macroname不唯一”。最后,如果宏需要输入,则只需在输入之后添加它。例如:“uniqueMacroName input1,input2,inputN”@GTPV非常感谢您的回复。答案对我有帮助!你知道,我假设宏在
    工作表
    模块中,这些模块是
    私有的
    ,所以这种方法不起作用-但是OP记录了宏,这些宏会自动将它们放入普通模块中。。。我应该更彻底地阅读这些问题。Hi@GTPV,我对Sheet1.macroNameNotUnique有点困惑,“macroNameNotUnique”的输入应该是什么?@Boomshakalaka很高兴我能帮上忙。如果宏不需要输入,则在调用宏时应该没有输入。如果某些宏没有唯一的名称,则首先需要指定宏所在模块的名称。例如:“module1.macroname不唯一”。最后,如果宏需要输入,则只需在输入之后添加它。例如:“uniqueMacroName input1,input2,inputN”@GTPV感谢您的回复