Di seguito vedremo due programmi in Excel VBA. Un programma ignora semplicemente errori. L’altro programma continua l’esecuzione da una linea specificata sopra colpire un errore.

Situazione:

Entrambi i programmi calcolare la radice quadrata di numeri.

Error Handling in Excel VBA

Radice quadrata 1 Aggiungere le seguenti righe di codice per il pulsante di comando ‘Radice quadrata 1’.

  1. In primo luogo, si dichiara due oggetti Gamma. Chiamiamo la gamma di oggetti RNG e delle cellule.

Dim rng As Range, cell As Range
  1. inizializzare il RNG oggetto Range con l’intervallo selezionato.

Set rng = Selection
  1. vuole calcolare la radice quadrata di ciascuna cella in un intervallo selezionato casualmente (questo intervallo può essere di qualsiasi dimensione). In Excel VBA, è possibile utilizzare il ciclo For Each di questo componente. Aggiungere le seguenti righe di codice:

For Each cell In rng

Next cell

Nota: RNG e cellule sono scelti a caso qui, è possibile utilizzare qualsiasi nome.

Ricordarsi di fare riferimento a questi nomi nel resto del codice.

  1. Aggiungere la seguente riga di codice al ciclo.

On Error Resume Next
  1. Successivamente, calcolare la radice quadrata di un valore. In Excel VBA, possiamo usare la funzione Sqr per questo. Aggiungere la seguente riga di codice al ciclo.

cell.Value = Sqr(cell.Value)
  1. Uscire l’editor di Visual Basic e testare il programma.

Risultato:

On Error Resume Next Result

Conclusione: Excel VBA ha ignorato le celle che contengono i valori non validi come i numeri negativi e testo. Senza usare il ‘On Error Resume Next’ affermazione si otterrebbe due errori. Fare attenzione a utilizzare solo il ‘On Error Resume Next’ economico quando si è sicuri ignorando errori è OK.

Radice quadrata 2 Aggiungere le seguenti righe di codice per il pulsante di comando ‘radice quadrata 2’.

  1. Lo stesso programma come radice quadrata 1, ma sostituire ‘On Error Resume Next’ con:

On Error GoTo InvalidValue:

Nota: InvalidValue è scelto a caso qui, è possibile utilizzare qualsiasi nome.

Ricordarsi di fare riferimento a questo nome nel resto del codice.

  1. Al di fuori del ciclo For Each successiva, prima aggiungere la seguente riga di codice:

Exit Sub

Senza questa linea, verrà eseguito il resto del codice (codice di errore), anche se non c’è nessun errore! 3. Excel VBA continua l’esecuzione in prima linea che iniziano con ‘InvalidValue:’ su di colpire un errore (non dimenticare i due punti). Aggiungere la seguente riga di codice:

InvalidValue:
  1. Manteniamo il nostro codice di errore semplice per ora. Mostriamo un MsgBox con del testo e l’indirizzo della cella in cui si è verificato l’errore.

MsgBox "can't calculate square root at cell " & cell.Address
  1. Aggiungere la seguente riga di istruire Excel VBA per riprendere l’esecuzione dopo l’esecuzione del codice di errore.

Resume Next
  1. Uscire l’editor di Visual Basic e testare il programma.

Risultato:

On Error GoTo Result

On Error GoTo Result

On Error GoTo Result