La programació basada en esdeveniments és una tècnica que permet que el codi VBA respongui a esdeveniments específics, com ara l'obertura d'un llibre, el canvi de valor d'una cel·la o el clic d'un botó. Aquesta tècnica és fonamental per crear aplicacions interactives i dinàmiques.
Conceptes clau
- Esdeveniments: Accions o successos que poden ser detectats pel codi VBA.
- Controladors d'esdeveniments: Subrutines que s'executen en resposta a un esdeveniment específic.
- Objectes d'esdeveniments: Objectes que poden generar esdeveniments, com ara fulls de càlcul, llibres, botons, etc.
Tipus d'esdeveniments comuns
- Esdeveniments de llibre: Open, BeforeClose, BeforeSave, etc.
- Esdeveniments de full de càlcul: Change, Calculate, SelectionChange, etc.
- Esdeveniments de control: Click, DblClick, MouseDown, etc.
Exemple pràctic: Esdeveniment de canvi de cel·la
Pas 1: Crear un nou llibre d'Excel
Obre un nou llibre d'Excel i guarda'l amb un nom significatiu, per exemple, "EventDrivenExample.xlsx".
Pas 2: Obrir l'editor VBA
- Premeu
Alt + F11
per obrir l'editor VBA. - A la finestra del Project Explorer, selecciona el full de càlcul on vols afegir l'esdeveniment (per exemple,
Sheet1
).
Pas 3: Afegir el controlador d'esdeveniments
- A la finestra de codi de
Sheet1
, seleccionaWorksheet
a la llista desplegable de l'esquerra. - Selecciona
Change
a la llista desplegable de la dreta. Això crearà una subrutina automàticament:
Private Sub Worksheet_Change(ByVal Target As Range) ' Aquest codi s'executarà cada vegada que es canviï una cel·la a Sheet1 If Not Intersect(Target, Me.Range("A1:A10")) Is Nothing Then MsgBox "La cel·la " & Target.Address & " ha canviat a " & Target.Value End If End Sub
Explicació del codi
Worksheet_Change
: Aquest és el nom del controlador d'esdeveniments que s'executa quan es canvia una cel·la.Target
: Representa la cel·la o el rang de cel·les que han canviat.Intersect(Target, Me.Range("A1:A10"))
: Comprova si la cel·la canviada està dins del rangA1:A10
.MsgBox
: Mostra un missatge amb l'adreça de la cel·la canviada i el seu nou valor.
Pas 4: Provar l'esdeveniment
- Torna a Excel.
- Canvia el valor de qualsevol cel·la dins del rang
A1:A10
aSheet1
. - Hauries de veure un missatge que indica l'adreça de la cel·la canviada i el seu nou valor.
Exercici pràctic
Objectiu
Crea un esdeveniment que mostri un missatge cada vegada que es faci clic en un botó a Sheet1
.
Instruccions
-
Afegeix un botó a
Sheet1
:- Ves a la pestanya
Desenvolupador
>Controls
>Inserir
>Botó (Control de formulari)
. - Dibuixa el botó a
Sheet1
i assigna-li el nom "Mostrar Missatge".
- Ves a la pestanya
-
Afegeix el següent codi a
Sheet1
:
Explicació del codi
Button1_Click
: Aquest és el nom del controlador d'esdeveniments que s'executa quan es fa clic en el botóButton1
.MsgBox
: Mostra un missatge que diu "Has fet clic al botó!".
Provar l'esdeveniment
- Torna a Excel.
- Fes clic en el botó "Mostrar Missatge".
- Hauries de veure un missatge que diu "Has fet clic al botó!".
Errors comuns i consells
- Error: "Object required": Assegura't que el nom del botó al codi coincideixi amb el nom del botó a Excel.
- Error: "Subscript out of range": Comprova que el rang especificat existeix i és correcte.
- Consell: Utilitza
Debug.Print
per imprimir missatges de depuració a la finestra immediata de l'editor VBA.
Conclusió
La programació basada en esdeveniments és una tècnica poderosa que permet crear aplicacions interactives i dinàmiques amb VBA. En aquest mòdul, hem après a crear controladors d'esdeveniments per respondre a canvis en cel·les i clics de botons. Amb aquesta base, pots explorar altres esdeveniments i crear aplicacions més complexes i útils.
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