A Visual Basic for Applications egy objektumorientált programozási nyelv. Az objektum-orientált programozás alapkoncepciója, hogy egy szoftveralkalmazás (jelen esetben az Excel) különféle egyedi objektumokból áll, amelyek mindegyikének megvan a maga sajátossága és felhasználása.
Egy Excel-alkalmazás cellákat, munkalapokat, diagramokat, pivot táblákat, alakzatokat tartalmaz – az Excel objektumok listája végtelennek tűnik. Minden objektumnak megvannak a saját jellemzői, amelyeket tulajdonságoknak neveznek , és saját felhasználási készletei, az úgynevezett metódusok .
Úgy gondolhatja ezt a koncepciót, mint azokra a tárgyakra, amelyekkel mindennap találkozik, mint például a számítógépe, az autója vagy a hűtőszekrénye. Ezen objektumok mindegyike rendelkezik azonosító tulajdonságokkal, mint például magasság, súly és szín. Mindegyiknek megvan a maga sajátos felhasználási módja, például az Excel használata, a nagy távolságra történő szállítás vagy a romlandó élelmiszerek hidegen tartása.
A VBA-objektumok azonosítható tulajdonságokkal és használati módszerekkel is rendelkeznek. A munkalapcella egy objektum, és leírható jellemzői (tulajdonságai) között szerepel a címe, magassága és a formázott kitöltési színe. A munkafüzet egyben VBA objektum is, használható tulajdonságai (metódusai) között szerepel a megnyitás, bezárás, valamint diagram vagy pivot tábla hozzáadásának lehetősége.
Az Excelben napi rendszerességgel foglalkozik munkafüzetekkel, munkalapokkal és tartományokkal. Valószínűleg úgy gondolja, hogy ezek az objektumok mindegyike az Excel része, és nem igazán választja el őket gondolatban. Az Excel azonban ezeket belsőleg az Excel objektummodellnek nevezett hierarchikus modell részének tekinti. Az Excel objektummodell egy világosan meghatározott objektumok halmaza, amelyek a köztük lévő kapcsolatoknak megfelelően vannak strukturálva.
Tárgyak megértése
A való világban mindent leírhatsz, amit tárgyként látsz. Ha ránézel a házadra, az egy tárgy. A házában vannak szobák; azok a helyiségek is különálló tárgyak. Ezekben a szobákban lehetnek szekrények. Azok a szekrények is tárgyak. Ha a házára, a szobákra és a szekrényekre gondol, hierarchikus kapcsolatot láthat közöttük. Az Excel ugyanígy működik.
Az Excelben az Application objektum a mindent átfogó objektum – hasonlóan az Ön házához. Az Application objektumon belül az Excel munkafüzetet tartalmaz. A munkafüzet belsejében egy munkalap található. Ezen belül van egy tartomány. Ezek mind olyan objektumok, amelyek hierarchikus struktúrában élnek.
Ha egy adott objektumra szeretne mutatni a VBA-ban, bejárhatja az objektummodellt. Például az 1. munkalap A1 cellájához való eljutáshoz írja be ezt a kódot:
Activeworkbook.Sheets("Sheet1").Tartomány("A1").Válasszon
A legtöbb esetben az objektummodell hierarchiája érthető, így nem kell minden szintet begépelni. A kód megadásával az A1 cellába is eljut, mert az Excel arra következtet, hogy az aktív munkafüzetre és az aktív lapra gondol:
Tartomány("A1").Válassza ki
Valójában, ha a kurzor már az A1 cellában van, akkor egyszerűen használhatja az ActiveCell objektumot, így nincs szükség a tartomány pontosítására:
Activecell.Select
A gyűjtemények megértése
Sok Excel-objektum gyűjteményekhez tartozik , amelyek lényegében hasonló objektumok csoportjai. Hasonlóképpen, az Ön háza egy környéken található, amely házak gyűjteménye. Mindegyik környék a városnak nevezett városrészek gyűjteményében található. Az Excel a gyűjteményeket maguknak objektumoknak tekinti.
Minden munkafüzet objektumban van egy munkalapgyűjtemény. A Munkalapok gyűjtemény egy olyan objektum, amelyet a VBA-n keresztül hívhat meg. A munkafüzet minden munkalapja a Munkalapok gyűjteményben található.
Ha egy munkalapra szeretne hivatkozni a Munkalapok gyűjteményben, hivatkozhat rá a gyűjteményben elfoglalt helye alapján, 1-gyel kezdődő indexszámként, vagy nevével, idézett szövegként. Ha a következő két kódsort futtatja egy olyan munkafüzetben, amelynek csak egy MySheet nevű munkalapja van, mindkettő ugyanazt teszi:
Munkalapok(1).Válassza ki
Munkalapok("MySheet").Válassza ki
Ha két olyan munkalapja van az aktív munkafüzetben, amelyeknek a neve MySheet és YourSheet, akkor ebben a sorrendben a második munkalapra hivatkozhat az alábbi utasítások valamelyikének begépelésével:
Munkalapok(2).Válassza ki
Munkalapok ("Saját lap"). Válassza a lehetőséget
Ha egy MySheet nevű munkafüzetben lévő munkalapra szeretne hivatkozni egy adott munkafüzetben, amely nem aktív, akkor minősítenie kell a munkalap hivatkozását és a munkafüzet hivatkozását az alábbiak szerint:
Munkafüzetek("MyData.xls").Worksheets("MySheet").Válasszon
A tulajdonságok megértése
A tulajdonságok alapvetően egy objektum jellemzői. A házának van színe, alapterülete, kora stb. Egyes tulajdonságok, például a ház színe megváltoztatható. Más tulajdonságok, például a ház építési éve, nem módosíthatók.
Hasonlóképpen, az Excel objektumainak, például a Worksheet objektumnak van egy módosítható lapnév tulajdonsága, és egy Rows.Count sortulajdonság, amely nem.
Egy objektum tulajdonságára hivatkozol az objektumra, majd a tulajdonságra hivatkozva. Például megváltoztathatja a munkalap nevét a Name tulajdonság megváltoztatásával.
Ebben a példában átnevezi a Munkalapot MySheet névre:
Táblázatok("Lap1").Name = "MySheet"
Egyes tulajdonságok csak olvashatók, ami azt jelenti, hogy nem rendelhet hozzá közvetlenül értéket. A csak olvasható tulajdonságra példa a cella Text tulajdonsága, amely egy érték formázott megjelenését biztosítja a cellában. Nem lehet felülírni vagy módosítani.
A módszerek megértése
A metódusok azok a műveletek, amelyeket egy objektummal szemben lehet végrehajtani. Segít, ha a módszereket igéknek tekintjük. Például kifestheti a házát; VBA-ban, ez azt jelenti, hogy
ház.festék
Egy egyszerű példa az Excel-módszerre a Range objektum Select metódusa:
Tartomány("A1").Válassza ki
Egy másik a Range objektum másolási módszere:
Tartomány("A1").Másolás
Egyes módszerek olyan paraméterekkel rendelkeznek, amelyek megszabhatják a módszerek alkalmazását. Például a Paste metódus hatékonyabban használható a Destination paraméter explicit meghatározásával:
ActiveSheet.Paste Destination:=Tartomány("B1")