【问题标题】:Cannot run the macro. The macro may not be availabe in this workbook无法运行宏。该工作簿中的宏可能不可用
【发布时间】:2017-03-09 22:49:48
【问题描述】:

遇到 VBA 错误“运行时 1004”问题。使用以下代码。宏是从第 5 行中的按钮调用的,因此是减法。第 6、7、8 行等中还有其他按钮,它们都调用相同的宏(随后调用特定的用户窗体),因此是变量。

Sub Export()
    i = RowNumber - 4

    Reinstated = "ReinstateR" & i

    Application.Run Reinstated

End Sub

“ReinstateR1”、“ReinstateR2”等宏都存储在单独的模块中。

Sub ReinstateR1()

'Macro function etc.

End Sub

但是,由于某种原因,当我单击按钮时,我收到以下错误消息:

“无法运行宏 'ReinstateR1'。此工作簿中可能没有该宏,或者所有宏都可能被禁用。”

所有宏都已启用,宏在同一个工作簿中等。信任中心设置设置为禁用所有带有通知的宏等。

我被难住了。我可以在没有变量的情况下调用宏,但这不是重点......

【问题讨论】:

  • 宏所在的模块名称是什么?
  • Export 宏位于名为“Exporter”的模块中,而 ReinstateR# 宏位于名为“Reinstater1”的模块中。
  • 你的问题。尝试运行 Reinstater1 将失败,因为模块和例程具有相同的名称。您要么需要添加模块名称:Application.Run "Renstater1." & Reinstated,要么最好为例程赋予模块不同的名称。
  • 我从来没有想过这个问题,感谢您指出。
  • @Rory 这应该是一个答案......

标签: vba excel macros


【解决方案1】:

如果你有一个与它包含的例程同名的模块,你需要使用Application.Run在对它的任何调用前加上模块名称(或更改模块或例程的名称),所以在这种情况下是:

Application.Run "Reinstater1." & Reinstated

【讨论】:

    猜你喜欢
    • 2013-08-25
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多