下面是我用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”来代替。
答案 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/的博客文章