application.run vba不使用表格宏

时间:2014-07-31 14:21:34

标签: excel vba excel-vba

我的文件中有不同的工作表,每个工作表都有相同名称的子程序,每个子程序执行特定于工作表的不同内容所以,我试图使用模块中的Application.Run动态调用选定工作表内的宏。所有工作表的“对象”名称(我不知道如何调用它们)已经被修改为与其视图(括号内)名称相同,没有空格。

macro = Chr(39) & ThisWorkbook.Name & Chr(39) & "!" & Replace(SheetName, " ", "") & "." & "Harmoniser()"
Application.Run macro

以下是工作表中Harmoniser宏的示例。

Sub Harmoniser()
    ActiveSheet.Range("k22").GoalSeek Goal:=0, ChangingCell:=Range("l13")
    MsgBox ("Done!")
End Sub

不知何故,只有MsgBox有效,并且每次都显示两次。通过设置断点进行调试也不起作用。它发生在我的所有床单上。 Application.Run是否有限制,它只允许某些代码或者Excel没有给我一个错误?

1 个答案:

答案 0 :(得分:2)

运行代码时我得到同样的东西。我尝试了一些不同的调整,如果我这样做,我可以进入调试/断点模式:

Sub t()
Dim sht As Worksheet
Dim macro As String

For Each sht In ThisWorkbook.Worksheets
    sht.Activate
    macro = sht.CodeName & ".Harmoniser"
    Application.Run macro
Next
End Sub

您的代码可能因为您使用ActiveSheet而没有首先激活包含要运行的宏的工作表而无提示错误。不确定MsgBox的双重显示,但似乎可能是相关的。