【问题标题】:How to create a macro and run multiple macros consequentially?如何创建一个宏并依次运行多个宏?
【发布时间】:2018-11-13 15:09:05
【问题描述】:

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

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

感谢任何想法!谢谢。

【问题讨论】:

  • “同时”是指它们必须同时运行还是宏按顺序运行可以吗?
  • 因为严格来说,单线程 vba 不可能并发...
  • 在一个普通模块中拥有五个不同的宏来引用五张纸并从那里调用它们会更容易。
  • 嗨@GTPV,因此对我有用。
  • @Darren Bartrup-Cook,因为我记录了那些格式的宏,所以代码真的很大。

标签: excel vba excel-2010 record


【解决方案1】:

正如this question 中所述:VBA 中的多线程无法在本地完成。

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

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

但 OP 在评论中提到顺序运行所有 5 个宏是一种选择。

你可以做的是:

  1. 添加新模块

  1. 在这个模块中添加一个新的公共子

  1. 引用此子中的所有宏名称

此宏的外观示例:

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

现在运行此宏将依次运行所有指定的宏。

【讨论】:

  • 非常感谢。答案对我有帮助!
  • 你知道,我假设宏位于Worksheet 模块中,而这些模块是Private,所以这种方式行不通 - 但 OP 记录了自动将它们放入普通模块中的宏。 . 我应该更彻底地阅读这些问题。
  • 嗨@GTPV,我对 Sheet1.macroNameNotUnique 有点困惑“macroNameNotUnique”的输入应该是什么?
  • @Boomshakalaka 很高兴我能提供帮助。如果您的宏不需要输入,那么在调用宏时应该没有输入。如果您的某些宏没有唯一名称,那么您首先需要指定宏所在模块的名称。例如:“module1.macroNameNotUnique”。最后,如果您的宏需要输入,那么您只需在之后添加它。例如:“uniqueMacroName input1, input2, inputN”
  • @GTPV 谢谢回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-25
  • 2014-07-06
  • 1970-01-01
相关资源
最近更新 更多