application.run vba不能使用图纸macros

我的文件有不同的工作表,里面有相同名称的子程序,每个子程序都做不同的工作。 所以,我试图从一个模块中使用Application.Rundynamic调用一个选定工作表内的macros。 所有工作表的“对象”名称(我不知道如何调用这些名称)已被修改为与其视图(括号内)名称相同,没有空格。

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

这里是一个工作表中的Harmonisermacros的例子。

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

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

当我运行你的代码时,我得到了同样的东西。 我尝试了几个不同的调整,并能够进入debugging/断点模式,如果我这样做:

 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 激活包含要运行的macros的工作表。 不知道有关MsgBox的双重显示,但似乎可能是相关的。