Obrada događaja

Kada korisnik klikne stavku menija ili dugme pruge sa alatkama (eng. toolbar button) ili izabere stavku iz kontrole ComboBox (padajući meni), izvršavaju se određene akcije (koje zavise od vrste kontrole) kao reakcija na događaj. U slučaju menija ili dugmadi reaguje se na događaj Click (eng. Click event, klik mišem), dok se prilikom izbora stavke iz kontrole ComboBox (padajućeg menija) ili promene teksta u tekstuelnom polju reaguje na događaj Change (eng. Change event, promena). Da bi došlo do očekivane reakcije objekta (kontrole), potrebno je napisati odgovarajuće naredbe i povezati ih sa objektom koji reaguje.

Kada se na neku kontrolu forme primeni dvostruki klik, toj kontroli se automatski pridružuje procedura za obradu događaja (eng. event handler). Procedura je zapravo imenovani skup naredbi koje se izvršavaju kao celina, redosledom kojim su navedene, pravi mali program (potprogram). Opšti oblik procedure je:

Sub imeProcedure(argumenti)

  naredba

  naredba

  …

  naredba

End Sub

gde su argumenti ulazi potprograma. U slučaju procedure za obradu događaja, argumenata nema

Ime procedure je u opštem slučaju proizvoljno, ali u slučaju procedura za obradu događaja to nije slučaj. Procedura za obradu događaja automatski dobija tačno određeno ime koje ne sme da se menja; to ime se sastoji od imena kontrole na koju se događaj odnosi (svojstvo Name te kontrole), podvlake i naziva događaja (Click, DblClick, Change, KeyDown, KeyUp itd). Npr, ako je kontrola dugme sa imenom btnPodvuci, procedura koja obrađuje klik na to dugme MORA da se zove btnPodvuci_Click.

Sub btnPodvuci_Click()

  naredba

  naredba

  …

  naredba

End Sub

  1. Dvostruki klik na dugme btnPodvuci (sa oznakom Podvuci) otvara prozor u kome se mogu kucati naredbe jezika VBA. U prozoru se pojavljuje "kostur" procedure btnPodvuci_Click.
  2. Dopuniti proceduru btnPodvuci_Click sledećim naredbama (linije koje počinju apostrofom su komentari i VBA ih ignoriše):
    Sub btnPodvuci_Click()
    
      'deklaracija promenljive za obilazak kolekcije recenica
    
      Dim recenica As Range
    
      'ActiveDocument.Sentences je kolekcija recenica u tekucem dokumentu
    
      For Each recenica In ActiveDocument.Sentences
    
        'Funkcija Trim uklanja eventualne razmake iz prve reci tekuce recenice;
    
        If Trim(recenica.Words(1)) = txtUlaz.Text Then
    
          'ako je prva rec u recenici ona koju je korisnik uneo, podvlacimo celu recenicu
    
          recenica.Underline = wdUnderlineSingle
    
        End If
    
      Next
    
    End Sub
  3. Slično, dopuniti proceduru btnOriginal_Click sledećim naredbama:
    Sub btnOriginal_Click()
    
      'deklaracija promenljive za obilazak kolekcije recenica
    
      Dim recenica As Range
    
      'ActiveDocument.Sentences je kolekcija recenica u tekucem dokumentu
    
      For Each recenica In ActiveDocument.Sentences
    
        'Funkcija Trim uklanja eventualne razmake iz prve reci tekuce recenice;
    
        If Trim(recenica.Words(1)) = txtUlaz.Text Then
    
          'ako je prva rec u recenici ona koju je korisnik uneo, podvlacimo celu recenicu
    
          recenica.Underline = wdUnderlineNone
    
        End If
    
      Next
    
    End Sub
    Primećujemo da se ove dve procedure (sem u imenu) razlikuju samo u načinu na koji se rečenica podvlači (wdUnderlineSingle i wdUnderlineNone).