Определить, все ли строки неисправны или некоторые правильны - обработка ошибок в excel vba - PullRequest
1 голос
/ 14 июля 2020

У меня есть структура, подобная приведенной ниже, для обработки ошибок.

    On error resume next
    Statement1
    Statement2
    Statement3
    On error goto 0

Мне нужно определить, все ли 3 оператора ошибочны или хотя бы один из них правильный. Заранее благодарим за любую помощь.

Ответы [ 2 ]

3 голосов
/ 14 июля 2020

Вы можете создать раздел обхода (обработка ошибок), чтобы при возникновении ошибки он выполнял действия, указанные в c фрагменте кода, а затем продолжал с того места, где вы были.

Sub Test
dim E1 as boolean
dim E2 as boolean
dim E3 as boolean

[any other code here]

On Error goto Err1Fail
Statement1
ResumeErr1Fail:
On Error Goto Err2Fail
Statement2
ResumeErr2Fail:
On Error Goto Err3Fail
Statement3
ResumeErr3Fail:
On Error Goto 0

[rest of code]

Exit Sub

'Error Handling Section
Err1Fail:
E1 = TRUE
resume ResumeErr1Fail
exit sub

Err2Fail:
E2 = TRUE
resume ResumeErr2Fail
exit sub

Err3Fail:
E3 = TRUE
resume ResumeErr3Fail
exit sub

End Sub

В [ остальная часть кода], затем вы можете оценить E1, E2 и E3, чтобы делать с ними все, что вам нужно.

2 голосов
/ 14 июля 2020

Как и любую проблему, ее можно решить разными способами. Придерживаясь идеи обработки ошибок, вы можете структурировать код следующим образом:

Private Sub Test()
   On Error Resume Next
   
   Dim atLeastOne As Integer
   
   Err.Clear
   Debug.Print 1 / 0
   If Err.Number = 0 Then atLeastOne = atLeastOne + 1

   Err.Clear
   Debug.Print 1 / 1
   If Err.Number = 0 Then atLeastOne = atLeastOne + 1

   Err.Clear
   Debug.Print 1 / 0
   If Err.Number = 0 Then atLeastOne = atLeastOne + 1
   
   MsgBox atLeastOne
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...