VBA消息框在打开错误转到中不起作用

时间:2018-11-28 11:03:48

标签: excel vba

下面是我用VBA编写的函数。

Option Explicit

Function MyMatrix(mtx As Range, vec As Range) As Variant
    On Error GoTo Exception

    Dim M
    M = Application.MInverse(mtx)

    MyMatrix = Application.MMult(M, vec)

    Exit Function
Exception:
    MsgBox prompt:="Test", Buttons:=[vbOKCancel,vbCritical], Title:="Two"
End Function

但是,当我尝试使用它时,msgbox并未显示错误。 下面是一个矩阵,该矩阵具有确定的零,您不能将其与另一个向量相乘。我相信我的代码已识别出确定为零,因为我在电子表格的框中收到错误,但没有弹出我的消息框。什么会导致此错误?

我尝试通读其他示例,但它们没有帮助。而且我不想使用“ On Error Resume Next”来代替。

enter image description here

1 个答案:

答案 0 :(得分:1)

有两种从VBA调用工作表函数的方法:

1)Application.MInverse
2)Application.WorksheetFunction.MInverse

发生错误时1)返回包含错误的变量,但是2)引发错误。 因此,您需要将1)与If Iserror(M) Then或2)与现有代码一起使用。

使用2)的音符比1)快

另请参阅我有关UDF https://fastexcel.wordpress.com/2011/06/06/writing-efficient-vba-udfs-part-2/的博客文章