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

  1. Esdeveniments: Accions o successos que poden ser detectats pel codi VBA.
  2. Controladors d'esdeveniments: Subrutines que s'executen en resposta a un esdeveniment específic.
  3. 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

  1. Premeu Alt + F11 per obrir l'editor VBA.
  2. 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

  1. A la finestra de codi de Sheet1, selecciona Worksheet a la llista desplegable de l'esquerra.
  2. 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 rang A1:A10.
  • MsgBox: Mostra un missatge amb l'adreça de la cel·la canviada i el seu nou valor.

Pas 4: Provar l'esdeveniment

  1. Torna a Excel.
  2. Canvia el valor de qualsevol cel·la dins del rang A1:A10 a Sheet1.
  3. 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

  1. 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".
  2. Afegeix el següent codi a Sheet1:

Private Sub Button1_Click()
    MsgBox "Has fet clic al botó!"
End Sub

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

  1. Torna a Excel.
  2. Fes clic en el botó "Mostrar Missatge".
  3. 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.

© Copyright 2024. Tots els drets reservats