Как перехватить ошибку с Application.WorksheetFunction.Match и обработать ее индивидуально, вместо того, чтобы Excel сообщал мне об ошибке? - PullRequest
0 голосов
/ 09 февраля 2019

Я использую функцию Application.match, чтобы найти номер столбца искомого заголовка столбца.Я хочу встретиться с настроенным всплывающим MsgBox, если ни один из заголовков не совпадает.

Тем не менее, прежде чем он даже доберется до оператора IfError, Excel уже останавливает мою программу и показывает сообщение об ошибке, в котором говорится, что совпадений не было

Спасибо за понимание.

col_num = Application.WorksheetFunction.Match("wanted name", theDataWS.Rows(1), 0)

If IsError(col_num) Then 
    MsgBox "Please rename your column name to 'wanted name'"
End If

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Чтобы использовать Application.WorhsheetFunction.Match, который может не найти совпадения, вам нужно использовать обработчик ошибок.

Что-то вроде

On Error Resume Next
col_num = Application.WorksheetFunction.Match("wanted name", theDataWS.Rows(1), 0)
If Err.Number <> 0 Then
    On Error Goto 0 ' restore error handling as soon as possible
    MsgBox "Please rename your column name to 'wanted name'"
Else
    On Error Goto 0
    ' non-error code
End If

Или используйте Application.Match, как другие ответили

0 голосов
/ 09 февраля 2019

Один из вариантов заключается в использовании Application.Match вместо Application.WorksheetFunction.Match.


  • Application.WorksheetFunction.Match вызовет ошибку во время выполнения, если совпадений нет.Вы можете перехватить и обработать его с помощью оператора On Error..., если хотите, или, возможно, лучше в этом случае, использовать Application.Match.

  • Application.Match не будет выбрасывать во время выполненияошибка;вместо этого переменная col_num будет содержать значение ошибки (в этом случае Ошибка 2042 соответствует #N/A).Таким образом, вы можете затем проверить IsError(col_num). *


* Обратите внимание, что в этом случае col_num должно быть Variant (объявлено либо неявно с Dim col_num, либо явнос Dim col_num As Variant).

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