单击一下即可将 运行 个宏分配给工作簿的许多 Excel 个工作表
Run macros assigned to many Excel sheets of a workbook with one click
我有一个包含 8 个工作表的工作簿。
我为每个工作表分配了一个宏。
我想一次单击一个工作表中的 运行 所有 8 个宏(通过单击一个按钮,到 运行 所有 8 个宏)。
如何执行?
更新这是我的代码
Sub cf1()
Application.Run "v1"
Application.Run "a1"
Application.Run "t1"
Application.Run "p1"
Application.Run "k1"
Application.Run "k2"
Application.Run "k3"
Application.Run "m1"
End Sub
Sub v1()
End Sub
.
.
.
Sub m1()
End sub
创建一个 运行 包含所有宏的新 Sub,并将其分配给 Form Control Button
。
像这样:
Sub RunAll()
Application.Run "MacroForSheet1"
Application.Run "MacroForSheet2"
.
.
Application.Run "MacroForSheet8"
End Sub
字符串参数是宏的 macro name
或 sub procedure name
。
我使用 Application.Run Method
这样您就可以调用所有宏,而不管您在哪里编写它们。
如果您将它们写在 Module
中,您也可以像这样显式:
Application.Run "Module1.MacroForSheet1"
如果你把它们写在 Sheet
那么你可以像这样明确:
Application.Run "Sheet1.MacroForSheet1"
其中 Sheet1
是在属性 window 中看到的对象代号。
如果这对您不起作用,请澄清问题并添加上下文。
Edit1: 如果你把它写在 Thisworkbook
对象中那么你应该这样做:
Application.Run "Thisworkbook.MacroForSheet1"
或者在你的情况下,
Application.Run "v1"
并将其放入 Module
。按 VBE > 插入 > 模块.
插入
顺便说一句,你可以像@thienkhoi tran 发布的那样做。
这也适用于您的情况。
我建议 Application.Run
这样你就可以在任何位置 运行 宏,Public
或 Private
。
您必须为 运行 所有宏子创建一个子。
你有:
Sub macro1()
// code 1
End Sub
Sub macro2()
// code 2
End Sub
Sub macro3()
// code 3
End Sub
你应该创建一个宏:
Sub totalMcr()
macro1
macro2
macro3
End Sub
并且 运行 仅适用于所有宏的 totalMcr()。
对于自定义 UI(功能区按钮或上下文菜单...),您可以使用工具 Office 自定义 UI 编辑器
我有一个包含 8 个工作表的工作簿。
我为每个工作表分配了一个宏。
我想一次单击一个工作表中的 运行 所有 8 个宏(通过单击一个按钮,到 运行 所有 8 个宏)。
如何执行?
更新这是我的代码
Sub cf1()
Application.Run "v1"
Application.Run "a1"
Application.Run "t1"
Application.Run "p1"
Application.Run "k1"
Application.Run "k2"
Application.Run "k3"
Application.Run "m1"
End Sub
Sub v1()
End Sub
.
.
.
Sub m1()
End sub
创建一个 运行 包含所有宏的新 Sub,并将其分配给 Form Control Button
。
像这样:
Sub RunAll()
Application.Run "MacroForSheet1"
Application.Run "MacroForSheet2"
.
.
Application.Run "MacroForSheet8"
End Sub
字符串参数是宏的 macro name
或 sub procedure name
。
我使用 Application.Run Method
这样您就可以调用所有宏,而不管您在哪里编写它们。
如果您将它们写在 Module
中,您也可以像这样显式:
Application.Run "Module1.MacroForSheet1"
如果你把它们写在 Sheet
那么你可以像这样明确:
Application.Run "Sheet1.MacroForSheet1"
其中 Sheet1
是在属性 window 中看到的对象代号。
如果这对您不起作用,请澄清问题并添加上下文。
Edit1: 如果你把它写在 Thisworkbook
对象中那么你应该这样做:
Application.Run "Thisworkbook.MacroForSheet1"
或者在你的情况下,
Application.Run "v1"
并将其放入 Module
。按 VBE > 插入 > 模块.
插入
顺便说一句,你可以像@thienkhoi tran 发布的那样做。
这也适用于您的情况。
我建议 Application.Run
这样你就可以在任何位置 运行 宏,Public
或 Private
。
您必须为 运行 所有宏子创建一个子。 你有:
Sub macro1()
// code 1
End Sub
Sub macro2()
// code 2
End Sub
Sub macro3()
// code 3
End Sub
你应该创建一个宏:
Sub totalMcr()
macro1
macro2
macro3
End Sub
并且 运行 仅适用于所有宏的 totalMcr()。
对于自定义 UI(功能区按钮或上下文菜单...),您可以使用工具 Office 自定义 UI 编辑器