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 IfExemple 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 SubEn 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 IfExemple 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 SubEn 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 SubEn 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 SubExercici 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 SubErrors comuns i consells
- Oblidar el
End If: Cada estructuraIf...Then...Elseha 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
ElseIfen 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
