Zaujíma vás, ako napísať procedúru obsluhy udalostí vo VBA? VBE vám pomôže, keď ste pripravení napísať procedúru obsluhy udalostí; zobrazí zoznam všetkých udalostí pre vybraný objekt.
V hornej časti každého okna Kód nájdete dva rozbaľovacie zoznamy:
V predvolenom nastavení sa v rozbaľovacom zozname Objekt v okne Kód zobrazuje Všeobecné.
Ak píšete obsluhu udalosti pre objekt ThisWorkbook, musíte kliknúť na ThisWorkbook v okne Project a potom vybrať Workbook z rozbaľovacej ponuky Object (je to jediná iná možnosť).
Ak píšete obsluhu udalosti pre objekt Hárok, musíte kliknúť na konkrétny Hárok v okne Projekt a potom vybrať Pracovný hárok z rozbaľovacieho zoznamu Objekt (opäť jediná iná možnosť).
Po výbere z rozbaľovacieho zoznamu Objekt si môžete vybrať udalosť z rozbaľovacieho zoznamu Postup. Tu sú niektoré z možností pre udalosť súvisiacu so zošitom.
Výber udalosti v okne Kód pre objekt ThisWorkbook.
Keď vyberiete udalosť zo zoznamu, VBE pre vás automaticky začne vytvárať procedúru obsluhy udalosti. Toto je veľmi užitočná funkcia, pretože vám presne povie, aké sú správne argumenty.
Tu je malý vtip. Keď prvýkrát vyberiete Workbook zo zoznamu Object, VBE vždy predpokladá, že chcete vytvoriť procedúru obsluhy udalosti pre udalosť Open a vytvorí ju za vás. Ak skutočne vytvárate procedúru Workbook_Open, je to v poriadku. Ak však vytvárate inú procedúru udalosti, musíte odstrániť prázdny Workbook_Open Sub, ktorý bol vytvorený.
Pomoc VBE však ide len tak ďaleko. Zapíše príkaz Sub a príkaz End Sub. Napísať kód VBA, ktorý ide medzi tieto dva príkazy, je vašou úlohou.
V skutočnosti nemusíte použiť tieto dva rozbaľovacie zoznamy, ale tým si uľahčíte prácu, pretože názov procedúry obsluhy udalostí je kriticky dôležitý. Ak názov presne nezadáte, postup nebude fungovať. Niektoré procedúry obsluhy udalostí tiež používajú jeden alebo viac argumentov v príkaze Sub. Neexistuje spôsob, ako si spomenúť, aké sú tieto argumenty. Napríklad, ak vyberiete SheetActivate zo zoznamu udalostí pre objekt zošita, VBE zapíše nasledujúci príkaz Sub:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
V tomto prípade je Sh argument odovzdaný procedúre a je to premenná, ktorá predstavuje hárok v aktivovanom zošite.