Les estructures de control són fonamentals en qualsevol llenguatge de programació, ja que permeten que el codi prengui decisions basades en certes condicions. En VBA, una de les estructures de control més utilitzades és l'estructura If...Then...Else.

Què és l'estructura If...Then...Else?

L'estructura If...Then...Else permet executar blocs de codi diferents en funció de si una condició és certa o falsa. Aquesta estructura és molt útil per controlar el flux del programa i prendre decisions dinàmiques.

Sintaxi bàsica

If condició Then
    ' Bloc de codi si la condició és certa
Else
    ' Bloc de codi si la condició és falsa
End If

Exemple bàsic

Sub ExempleIfThenElse()
    Dim x As Integer
    x = 10
    
    If x > 5 Then
        MsgBox "x és més gran que 5"
    Else
        MsgBox "x és menor o igual a 5"
    End If
End Sub

En aquest exemple, el missatge "x és més gran que 5" es mostrarà perquè la condició x > 5 és certa.

Estructures If...Then...ElseIf

Quan necessitem comprovar múltiples condicions, podem utilitzar l'estructura If...Then...ElseIf. Aquesta estructura permet afegir condicions addicionals que es comproven seqüencialment.

Sintaxi

If condició1 Then
    ' Bloc de codi si condició1 és certa
ElseIf condició2 Then
    ' Bloc de codi si condició2 és certa
Else
    ' Bloc de codi si cap de les condicions anteriors és certa
End If

Exemple amb ElseIf

Sub ExempleIfThenElseIf()
    Dim nota As Integer
    nota = 85
    
    If nota >= 90 Then
        MsgBox "Excel·lent"
    ElseIf nota >= 75 Then
        MsgBox "Bé"
    ElseIf nota >= 50 Then
        MsgBox "Suficient"
    Else
        MsgBox "Insuficient"
    End If
End Sub

En aquest exemple, el missatge "Bé" es mostrarà perquè la condició nota >= 75 és certa.

Estructures If...Then anidades

Les estructures If...Then també poden ser anidades, és a dir, una estructura If...Then dins d'una altra. Això permet una major flexibilitat en la presa de decisions.

Exemple d'If anidat

Sub ExempleIfAnidat()
    Dim x As Integer
    Dim y As Integer
    x = 10
    y = 20
    
    If x > 5 Then
        If y > 15 Then
            MsgBox "x és més gran que 5 i y és més gran que 15"
        Else
            MsgBox "x és més gran que 5 però y no és més gran que 15"
        End If
    Else
        MsgBox "x no és més gran que 5"
    End If
End Sub

En aquest exemple, el missatge "x és més gran que 5 i y és més gran que 15" es mostrarà perquè ambdues condicions són certes.

Exercicis pràctics

Exercici 1

Escriu un programa que comprovi si un número és positiu, negatiu o zero i mostri un missatge adequat.

Solució

Sub ComprovarNumero()
    Dim num As Integer
    num = InputBox("Introdueix un número:")
    
    If num > 0 Then
        MsgBox "El número és positiu"
    ElseIf num < 0 Then
        MsgBox "El número és negatiu"
    Else
        MsgBox "El número és zero"
    End If
End Sub

Exercici 2

Escriu un programa que comprovi si un any és de traspàs. Un any és de traspàs si és divisible per 4, però no per 100, excepte si també és divisible per 400.

Solució

Sub ComprovarAnyDeTraspàs()
    Dim any As Integer
    any = InputBox("Introdueix un any:")
    
    If (any Mod 4 = 0 And any Mod 100 <> 0) Or (any Mod 400 = 0) Then
        MsgBox "L'any és de traspàs"
    Else
        MsgBox "L'any no és de traspàs"
    End If
End Sub

Errors comuns i consells

  • Oblidar el End If: Cada estructura If...Then...Else ha de tancar-se amb un End If.
  • Condicions incorrectes: Assegura't que les condicions que escrius són correctes i cobreixen tots els casos possibles.
  • Utilitzar ElseIf en lloc de Else If: En VBA, ElseIf és una sola paraula, no dues.

Conclusió

L'estructura If...Then...Else és una eina poderosa per controlar el flux del teu programa en VBA. Amb la pràctica, podràs utilitzar aquestes estructures per prendre decisions complexes i dinàmiques en els teus projectes. En el següent tema, explorarem els bucles en VBA, que et permetran repetir blocs de codi de manera eficient.

© Copyright 2024. Tots els drets reservats