为什么Excel VBA调用一个加载macros函数会导致Excel崩溃?
我正在运行32位Excel 2010(Windows 10.1),并加载了一个加载项(我开发的)。 我需要从VBA调用其中一个加载项函数(我将其称为changeText
)。
我在其中一个工作表后面写了下面的VBA代码:
Sub MakeChange() Dim result As String result = Application.Run("changeText", "teststring") Debug.Print result Debug.Print "Complete" End Sub
并将该Sub分配给该工作表上的一个button。
如果我直接从VBA编辑器中运行这个函数,它每次都能正常工作,并将正确的结果返回到debugging窗口。
如果我通过按下button从Excel中调用函数,第一次出现“types不匹配”错误(通过消息框)。 如果我再次按下button,一切都会挂起,唯一的出路就是杀死进程。
如果将函数移到工作簿级模块,则会发生大致相同的事情 – 在Application.Run
行上单击“End”时出现“types不匹配”错误,然后在第二次单击时再次出现此错误,但此时按“结束”后应用程序挂起。
加载项是成熟的,被调用的函数在直接从Excel内调用或者被加载项调用时完美地工作。 被调用的XLL函数接受一个string并返回一个string。
有没有人有任何想法可能发生在这里,特别是为什么应用程序崩溃?