La gestió d'errors és una part fonamental de la programació en VBA. Permet que el teu codi pugui manejar situacions inesperades de manera controlada, evitant que l'execució del programa es detingui abruptament. En aquesta secció, aprendrem com gestionar errors en VBA utilitzant diverses tècniques i estructures.

Conceptes Clau

  1. Errors en temps d'execució: Són errors que es produeixen mentre el codi s'està executant. Aquests errors poden ser deguts a diverses raons, com ara la divisió per zero, l'accés a un índex fora de límits en un array, o la referència a un objecte que no existeix.
  2. Gestió d'errors: Consisteix en detectar i manejar errors de manera que el programa pugui continuar executant-se o finalitzar de manera controlada.

Estructures de Gestió d'Errors

On Error Statement

La instrucció On Error s'utilitza per gestionar errors en VBA. Hi ha diverses formes d'utilitzar aquesta instrucció:

  1. On Error GoTo [label]: Redirigeix l'execució del codi a una etiqueta específica quan es produeix un error.
  2. On Error Resume Next: Continua l'execució del codi a la següent línia després de la línia que ha produït l'error.
  3. On Error GoTo 0: Desactiva la gestió d'errors en el codi.

Exemple Pràctic

A continuació, es mostra un exemple pràctic de com utilitzar aquestes instruccions per gestionar errors en VBA.

Sub ExempleGestioErrors()
    Dim divisor As Integer
    Dim resultat As Double
    
    ' Configura la gestió d'errors per redirigir a la secció d'errors
    On Error GoTo ErrorHandler
    
    ' Sol·licita a l'usuari que introdueixi un número
    divisor = InputBox("Introdueix un número per dividir 100:")
    
    ' Realitza la divisió
    resultat = 100 / divisor
    MsgBox "El resultat és " & resultat
    
    ' Finalitza la subrutina
    Exit Sub
    
ErrorHandler:
    ' Mostra un missatge d'error
    MsgBox "S'ha produït un error: " & Err.Description
    ' Continua l'execució del codi
    Resume Next
End Sub

Explicació del Codi

  1. On Error GoTo ErrorHandler: Configura la gestió d'errors per redirigir l'execució a l'etiqueta ErrorHandler si es produeix un error.
  2. InputBox: Sol·licita a l'usuari que introdueixi un número.
  3. Divisió: Realitza la divisió de 100 pel número introduït per l'usuari.
  4. ErrorHandler: Si es produeix un error (per exemple, si l'usuari introdueix zero), l'execució es redirigeix aquí. Es mostra un missatge d'error amb la descripció de l'error i es continua l'execució del codi amb Resume Next.

Exercicis Pràctics

Exercici 1: Gestió d'Errors Bàsica

Escriu una subrutina que sol·liciti a l'usuari que introdueixi dos números i mostri el resultat de la seva divisió. Implementa la gestió d'errors per manejar la divisió per zero.

Solució

Sub DivisioAmbGestioErrors()
    Dim num1 As Double
    Dim num2 As Double
    Dim resultat As Double
    
    On Error GoTo ErrorHandler
    
    num1 = InputBox("Introdueix el primer número:")
    num2 = InputBox("Introdueix el segon número:")
    
    resultat = num1 / num2
    MsgBox "El resultat és " & resultat
    
    Exit Sub
    
ErrorHandler:
    MsgBox "Error: No es pot dividir per zero."
    Resume Next
End Sub

Exercici 2: Gestió d'Errors Avançada

Escriu una subrutina que llegeixi valors d'un rang de cel·les en un full de càlcul i calculi la mitjana. Implementa la gestió d'errors per manejar cel·les buides o valors no numèrics.

Solució

Sub CalculaMitjanaAmbGestioErrors()
    Dim rng As Range
    Dim cel·la As Range
    Dim suma As Double
    Dim comptador As Integer
    Dim mitjana As Double
    
    On Error Resume Next
    
    Set rng = Range("A1:A10")
    
    For Each cel·la In rng
        If IsNumeric(cel·la.Value) Then
            suma = suma + cel·la.Value
            comptador = comptador + 1
        End If
    Next cel·la
    
    If comptador > 0 Then
        mitjana = suma / comptador
        MsgBox "La mitjana és " & mitjana
    Else
        MsgBox "No hi ha valors numèrics en el rang seleccionat."
    End If
End Sub

Errors Comuns i Consells

  1. Oblidar desactivar la gestió d'errors: Després de gestionar un error, assegura't de desactivar la gestió d'errors amb On Error GoTo 0 per evitar comportaments inesperats.
  2. No proporcionar informació suficient a l'usuari: Quan es produeix un error, proporciona informació clara i útil a l'usuari sobre què ha anat malament i com pot solucionar-ho.
  3. No utilitzar Resume adequadament: Utilitza Resume per continuar l'execució del codi després de gestionar un error. Resume Next és útil per saltar a la següent línia de codi, però assegura't que és el comportament desitjat.

Conclusió

La gestió d'errors en VBA és essencial per crear aplicacions robustes i fiables. Mitjançant l'ús de les instruccions On Error, pots detectar i manejar errors de manera controlada, millorant l'experiència de l'usuari i evitant que el teu codi es detingui inesperadament. Practica amb els exercicis proporcionats per consolidar els teus coneixements i estar preparat per gestionar errors en els teus projectes VBA.

© Copyright 2024. Tots els drets reservats