Secondo On Error NON intercetta errore
Hai un problema con Excel? 
Secondo On Error NON intercetta errore
di marinoernestoch data: 10/10/2017 10:03:35
Buon giorno.
Come da titolo, ho notato che in presenza di due errori consecutivi e con l'istruzione On Error Goto etichetta, il primo errore viene intercettato, mentre il secondo NO.
Modificando la logica, inserendo l' On Error Resume Next e testando l'eventuale codice di errore a posteriori, funziona. Perchè nel caso iniziale ho l'errore? Risulta anche a voi?.
Il codice sotto, scritto solo per verificare le condizioni, ne è un veloce esempio.
Grazie.
marino ernesto
Sub errore()
' se resume next: OK
' se goto xx: al secondo errore KO
Dim comodo$, indirizzo$
' On Error GoTo no1
On Error Resume Next
'comodo = Range(" ").Address
Kill Environ$("TEMP") & "dati.csv" 'nella direttrice TEMP
If Err.Number > 0 Then MsgBox "errore dentro = " & Err.Number
GoTo dopo
no1:
MsgBox "errore fuori 1= " & Err.Number
dopo:
Err.Clear
'On Error GoTo no2
On Error Resume Next
comodo = Range(" ").Address
' Kill Environ$("TEMP") & "dati.csv" 'nella direttrice TEMP
If Err.Number > 0 Then MsgBox "errore dentro dopo 1 = " & Err.Number
GoTo qui_errore_non_gestito
no2:
MsgBox "errore fuori 2= " & Err.Number
qui_errore_non_gestito:
Err.Clear
On Error GoTo vediamo_poi
Kill Environ$("TEMP") & "dati.csv" 'nella direttrice TEMP
'If Err.Number > 0 Then MsgBox "errore qui gestito = " & Err.Number
GoTo dopo_vediamo_poi
vediamo_poi:
MsgBox "errore qui gestito fuori = " & Err.Number
dopo_vediamo_poi:
Err.Clear
'On Error Resume Next
On Error GoTo no_ci_arriva_mai
comodo = Range(" ").Address
' Kill Environ$("TEMP") & "dati.csv" 'nella direttrice TEMP
If Err.Number > 0 Then MsgBox "errore dentro a vediamo_poi = " & Err.Number
Err.Clear
Exit Sub
no_ci_arriva_mai:
MsgBox "qui no_ci_arriva_mai 2= " & Err.Number
End Sub
|
di oregon (utente non iscritto) data: 10/10/2017 11:27:39
In effetti usi male la On Error ...
Dato che nel codice c'è una confusione elevata, esattamente vorresti spiegare cosa vorresti ottenere ?
di marinoernestoch data: 10/10/2017 12:56:51
Ciao Oregon.
Come ho detto sopra, le istruzioni non hanno logica! sono SOLO state scritte per dimostrare che a fronte di due ON error Goto, la seconda condizione non viene intercettata. (Per evitare il problema, nella sub che sto scrivendo -che nulla a che vedere con quanto postato- ho già modificato la logica, usando la 'On Error Resume Next.) Quello che chiedo è se anche ad altri utenti è capitata la situazione esposta, oppure se eventualmente esiste un qualche parametro da impostare che governi meglio la gestione di errori multipli.
Grazie
di oregon (utente non iscritto) data: 11/10/2017 17:29:21
Non so ma se scrivi il codice che ti mostro, non mi pare ci siano problemi
On Error GoTo FirstHandler
Kill "UnFILE"
GoTo Nxt1
FirstHandler:
MsgBox "Primo errore"
Resume Next
Nxt1:
On Error GoTo SecondHandler
Kill "UnAltroFILE"
GoTo Nxt2
SecondHandler:
MsgBox "Secondo errore"
Resume Next
Nxt2: |
di marinoernestoch data: 11/10/2017 18:54:03
OK Oregon.
Ho imparato l'uso del Resume next (privo di ON Error).
Mi era parso di capire che dopo un errore fosse consigliato di dare un err.clear.
Leggendo ora l'help, il Resume next cancella implicitamente l'errore.
Nella mia 'semplicità', dopo l'Err.Clear scendevo in sequenza; di fatto con Resume torno indietro di un passo, per poi avanzare di due (col Goto) . Ma così funziona: allora ci adeguiamo.
Grazie della disponibilità Oregon
Vuoi Approfondire?