VBA消息框在on错误goto中不起作用

问题描述 投票:1回答:1

下面是我用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

excel vba
1个回答
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/的博客文章

© www.soinside.com 2019 - 2024. All rights reserved.