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 estructuraIf...Then...Else
ha de tancar-se amb unEnd If
. - Condicions incorrectes: Assegura't que les condicions que escrius són correctes i cobreixen tots els casos possibles.
- Utilitzar
ElseIf
en lloc deElse 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.
Curs de VBA (Visual Basic for Applications)
Mòdul 1: Introducció a VBA
Mòdul 2: Conceptes bàsics de VBA
- Variables i tipus de dades
- Operadors en VBA
- Estructures de control: If...Then...Else
- Bucles: For, While, Do Until
- Treballar amb arrays
Mòdul 3: Treballar amb objectes d'Excel
- Comprendre el model d'objectes d'Excel
- Treballar amb llibres i fulls de càlcul
- Manipulació de cel·les i rangs
- Utilitzar l'objecte Range
- Formatar cel·les amb VBA
Mòdul 4: Programació avançada en VBA
- Crear i utilitzar funcions
- Gestió d'errors en VBA
- Tècniques de depuració
- Treballar amb UserForms
- Programació basada en esdeveniments
Mòdul 5: Interactuar amb altres aplicacions
- Automatitzar Word amb VBA
- Automatitzar Outlook amb VBA
- Accedir a bases de dades amb VBA
- Utilitzar VBA per controlar PowerPoint
Mòdul 6: Millors pràctiques i optimització
- Escriure codi VBA eficient
- Tècniques de refactorització de codi
- Documentar el teu codi
- Control de versions per a projectes VBA