为什么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。

有没有人有任何想法可能发生在这里,特别是为什么应用程序崩溃?