Окно сообщения VBA не работает в при ошибке Перейти к - PullRequest
0 голосов
/ 28 ноября 2018

Ниже приведена функция, которую я написал в 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 голосов
/ 28 ноября 2018

Существует два способа вызова функций рабочего листа из VBA:

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

При возникновении ошибки 1) возвращает вариантсодержит ошибку, но 2) вызывает ошибку.Поэтому вам нужно либо использовать 1) с If Iserror(M) Then или 2) с существующим кодом.

Обратите внимание, что использование 2) быстрее, чем 1)

См. Также мое сообщение в блоге на UDFs https://fastexcel.wordpress.com/2011/06/06/writing-efficient-vba-udfs-part-2/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...