Ahogy jártas lesz az Excel VBA használatában, sok időt tölt a kódablakok használatával. A rögzített makrók egy modulban vannak tárolva, és az Excel VBA-kódját közvetlenül egy VBA-modulba írhatja be.
VBA kód ablakok minimalizálása és maximalizálása
Ha több projektje van megnyitva, a VBE-nek egy adott időpontban sok kódablaka lehet.

A kódablak túlterhelése nem túl szép látvány.
A kódablakok olyanok, mint az Excel munkafüzet-ablakai. Minimalizálhatja, maximalizálhatja, átméretezheti, elrejtheti, átrendezheti stb. A legtöbb ember sokkal könnyebben tudja maximalizálni a kód ablakot, amelyen dolgozik. Ezzel több kódot láthat, és elkerülheti, hogy elterelje a figyelmét.
A kódablak maximalizálásához kattintson a Maximalizálás gombra a címsorban (közvetlenül az X mellett). Vagy egyszerűen kattintson duplán a címsorra a maximalizáláshoz. A kódablak eredeti méretének visszaállításához kattintson a Visszaállítás gombra. Ha egy ablak teljes méretre van állítva, a címsora nem látható, így a Visszaállítás gomb a VBE címsora alatt található.
Néha előfordulhat, hogy két vagy több kódablakot szeretne látni. Például érdemes lehet összehasonlítani a kódot két modulban, vagy átmásolni a kódot egyik modulból a másikba. Az ablakokat manuálisan is elrendezheti, vagy az Ablak → Vízszintes mozaik vagy az Ablak → Függőleges mozaik menüpontot választva az automatikus elrendezéshez.
Gyorsan válthat a kódablakok között a Ctrl+F6 lenyomásával. Ha megismétli ezt a billentyűkombinációt, akkor folyamatosan végigjárja az összes megnyitott kódablakot. A Ctrl+Shift+F6 lenyomása fordított sorrendben váltogatja az ablakokat. (További információért tekintse meg ezeket az Excel VBA billentyűparancsokat .)
A kódablak minimalizálása elkerüli az útból. Az ablak bezárásához rákattinthat az ablak Bezárás gombjára is (amelyen X látható) a kódablak címsorában. (Az ablak bezárása csak elrejti; nem veszít semmit.) Az újbóli megnyitáshoz kattintson duplán a megfelelő objektumra a Projekt ablakban. Mellesleg, ezekkel a Code ablakokkal dolgozni nehezebbnek tűnik, mint amilyen valójában.
VBA modul létrehozása
Általánosságban elmondható, hogy egy Excel VBA-modul háromféle kódot tartalmazhat:
- Nyilatkozatok: Egy vagy több információs nyilatkozat, amelyet a VBA-nak ad meg. Például deklarálhatja a használni kívánt változók adattípusát, vagy beállíthat más modulszintű beállításokat. A nyilatkozatok alapvetően háztartási nyilatkozatok. Valójában nincsenek kivégezve.
- Aleljárások: Programozási utasítások halmaza, amelyek végrehajtásakor végrehajt valamilyen műveletet.
- Függvényeljárások: Programozási utasítások halmaza, amely egyetlen értéket ad vissza (elvileg hasonló a munkalapfüggvényekhez, például a SUM).
Egyetlen VBA-modul tetszőleges számú aleljárást, függvényeljárást és deklarációt képes tárolni. Nos, van egy határa - mintegy 64.000 karakter modulonként. Nem valószínű, hogy a 64 000 karakteres korlát elérésének közelébe is kerül. De ha igen, a megoldás egyszerű: csak helyezzen be egy új modult.
Teljesen Önön múlik, hogyan szervezi meg a VBA-modult. Vannak, akik szívesebben tartják az alkalmazáshoz tartozó összes VBA-kódot egyetlen VBA-modulban; mások szeretik a kódot több modulra felosztani. Ez személyes döntés, akárcsak a bútorok elrendezése.
VBA kód bevitele egy modulba
Az üres VBA-modul olyan, mint a hamis étel, amelyet néhány kínai étterem ablakában lát; jól néz ki, de nem igazán segít neked. Mielőtt bármi értelmeset tenne, rendelkeznie kell néhány VBA kóddal a VBA modulban. Háromféleképpen töltheti be a VBA-kódot egy VBA-modulba:
- Írja be közvetlenül a kódot.
- Az Excel makrórögzítővel rögzítheti a műveleteket, és konvertálhatja azokat VBA-kódba.
- Másolja ki a kódot az egyik modulból, és illessze be a másikba.
Az Excel VBA kód közvetlen bevitele
Néha a legjobb útvonal a legközvetlenebb. A kód közvetlen bevitele magában foglalja… nos, a kód közvetlen bevitelét. Más szavakkal, a kódot a billentyűzet segítségével írja be. A szöveg bevitele és szerkesztése egy VBA-modulban az elvárásoknak megfelelően működik. Kijelölheti, másolhatja, kivághatja, beillesztheti, és más műveleteket is végezhet a szöveggel.
A Tab billentyűvel behúzhat néhány sort, hogy könnyebben olvasható legyen a kód. A behúzás nem szükséges, de jó szokás, amit el kell sajátítani. Az Excel VBA kódolásának tanulmányozása során megérti, miért hasznos a kódsorok behúzása.
A VBA-kód egyetlen sora olyan hosszú lehet, amennyire szüksége van rá. A hosszú kódsorok felosztásához azonban érdemes lehet használni a sorfolytató karaktereket. Ha egyetlen kódsort (más néven utasítást) szeretne folytatni egyik sorról a másikra, fejezze be az első sort szóközzel, amelyet aláhúzásjel (_) követ. Ezután folytassa az állítást a következő sorban. És ne felejtsd el a teret. Egy aláhúzás karakter, amely előtt nincs szóköz, nem fogja ellátni a feladatot.
Íme egy példa egyetlen utasításra, három sorra osztva:
Selection.Sort Key1:=Tartomány("A1"), _
Sorrend1:=xlNövekvő, Fejléc:=xlGuess, _
Orientation:=xlTopToBottom
Ez az utasítás pontosan ugyanúgy működne, ha egyetlen sorban lenne beírva (sorfolytató karakterek nélkül). Figyeljük meg, hogy ennek az utasításnak a második és harmadik sora behúzott. A behúzás nem kötelező, de segít tisztázni azt a tényt, hogy ezek a sorok nem különálló utasítások.
A VBE-t tervező fehérbevonatos mérnökök arra számítottak, hogy az emberek hibázni fognak. Ezért a VBE-nek több szintje van a visszavonásnak és az újrakészítésnek. Ha olyan utasítást törölt, amelyet nem kellett volna, kattintson a Visszavonás gombra az eszköztáron (vagy nyomja le a Ctrl+Z billentyűkombinációt), amíg az utasítás ismét meg nem jelenik. A visszavonás után kattintson az Újra gombra a visszavont módosítások végrehajtásához.
Készen állsz egy valós kód megadására? Próbálja ki a következő lépéseket:
Hozzon létre egy új munkafüzetet Excelben.
Nyomja meg az Alt+F11 billentyűket a VBE aktiválásához.
Kattintson az új munkafüzet nevére a Projekt ablakban.
Válassza a Beszúrás → Modul menüpontot egy VBA-modul beillesztéséhez a projektbe.
Írja be a következő kódot a modulba:
Al GuessName()
Msg = "Az Ön neve " & Application.UserName & "?"
Ans = MsgBox(Msg, vbYesNo)
Ha Ans = vbNo Akkor MsgBox "Ó, mindegy."
Ha Ans = vbYes Akkor MsgBox "Pszichikusnak kell lennem!"
Vége Sub
Helyezze a kurzort bárhová a beírt szövegen belül, és nyomja meg az F5 billentyűt az eljárás végrehajtásához.
Az F5 a Futtatás → Al-/Felhasználói űrlap futtatása parancsikonja. Ha helyesen adta meg a kódot, az Excel végrehajtja az eljárást, és válaszolhat az egyszerű párbeszédpanelre. A párbeszédpanel szövege eltér az itt láthatótól.

A GuessName eljárás ezt a párbeszédpanelt jeleníti meg.
Amikor beírja az 5. lépésben felsorolt kódot, észreveheti, hogy a VBE bizonyos módosításokat végez a beírt szövegen. Például a Sub utasítás beírása után a VBE automatikusan beszúrja az End Sub utasítást. És ha kihagyja az egyenlőségjel előtti vagy utáni szóközt, a VBE beszúrja a szóközt. Ezenkívül a VBE megváltoztatja bizonyos szövegek színét és nagybetűit. Ez mind teljesen normális. Ez csak a VBE módja annak, hogy rendben és olvashatóan tartsa a dolgokat.
Ha követte az előző lépéseket, akkor most írt egy VBA-aleljárást, más néven makrót. Ha megnyomja az F5 billentyűt, az Excel végrehajtja a kódot, és követi az utasításokat. Más szóval, az Excel minden egyes állítást kiértékel, és azt teszi, amit mondtál neki. (Ne hagyja, hogy ez az újonnan felfedezett erő a fejébe szálljon.) Ezt a makrót akárhányszor végrehajthatja – bár néhány tucat alkalom után hajlamos elveszíteni vonzerejét.
Ez az egyszerű Excel makró a következő fogalmakat használja:
- Aleljárás meghatározása (első sor)
- Értékek hozzárendelése a változókhoz (Msg and Ans)
- Karakterlánc összefűzése (csatlakozása) (a & operátor használatával)
- Beépített VBA funkció használata (MsgBox)
- Beépített VBA-konstansok használata (vbYesNo, vbNo és vbYes)
- Ha-Akkor konstrukció használata (kétszer)
- Aleljárás befejezése (utolsó sor)
Az Excel VBA makrórögzítő használata
Egy másik módja annak, hogy kódot kapjon egy VBA-modulba, ha rögzíti a műveleteit az Excel makrórögzítővel.
Mellesleg a fent bemutatott GuessName eljárást egyáltalán nem lehet rögzíteni. Csak olyan dolgokat rögzíthet, amelyeket közvetlenül megtehet az Excelben. Az üzenetablak megjelenítése nem szerepel az Excel normál repertoárjában. (Ez egy VBA dolog.) A makrórögzítő hasznos, de sok esetben valószínűleg manuálisan kell beírnia legalább egy kódot.
Íme egy lépésenkénti példa, amely bemutatja, hogyan rögzíthet olyan makrót, amely új munkalapot szúr be, és elrejti az összes sort, kivéve az első tíz sort és az összes oszlopot, kivéve az első tíz oszlopot. Ha ki szeretné próbálni ezt a példát, kezdjen egy új, üres Excel-munkafüzettel, és kövesse az alábbi lépéseket:
Aktiváljon egy munkalapot a munkafüzetben.
Bármely Excel munkalap megteszi.
Kattintson a Fejlesztő fülre, és győződjön meg arról, hogy a Relatív hivatkozások használata lehetőség nincs kijelölve.
Ezt a makrót az Absolute References használatával rögzítették.
Válassza a Fejlesztő → Kód → Makró rögzítése lehetőséget, vagy kattintson a Kész jelző melletti ikonra az állapotsor bal oldalán.
Az Excel megjeleníti a Makró rögzítése párbeszédpanelt.
A Makró rögzítése párbeszédpanelen nevezze el a makrót TenByTennek, adja meg, hogy a makrót ebben a munkafüzetben kívánja tárolni, majd nyomja le a Shift+T billentyűkombinációt a billentyűparancsként.
A makró a Ctrl+Shift+T megnyomásával végrehajtható.
Kattintson az OK gombra a felvétel elindításához. Az Excel automatikusan beszúr egy új VBA-modult a projektbe, amely megfelel az aktív munkafüzetnek.
Ettől kezdve az Excel a műveleteket VBA-kóddá alakítja. Felvétel közben az állapotsorban lévő ikon kis négyzetté változik. Ez arra emlékeztet, hogy a makrórögzítő fut. Arra az ikonra kattintva is leállíthatja a makrórögzítőt.
Kattintson az Új munkalap ikonra az utolsó lapfül jobb oldalán.
Az Excel beszúr egy új munkalapot.
Jelölje ki a teljes K oszlopot (a 11. oszlopot), és nyomja meg a Ctrl+Shift+jobbra nyíl billentyűkombinációt; majd kattintson a jobb gombbal bármelyik kijelölt oszlopra, és válassza az Elrejtés parancsot a helyi menüből.
Az Excel elrejti az összes kijelölt oszlopot.
Jelölje ki a teljes 11. sort, és nyomja meg a Ctrl+Shift+le nyílbillentyűket; majd kattintson a jobb gombbal bármelyik kiválasztott sorra, és válassza az Elrejtés parancsot a helyi menüből.
Az Excel elrejti az összes kijelölt oszlopot.
Válassza ki az A1 cellát.
Válassza a Fejlesztő → Kód → Rögzítés leállítása lehetőséget, vagy kattintson a Felvétel leállítása gombra az állapotsorban (a kis négyzetben). Az Excel leállítja a műveletek rögzítését.
Az újonnan rögzített makró megtekintéséhez nyomja meg az Alt+F11 billentyűkombinációt a VBE aktiválásához. Keresse meg a munkafüzet nevét a Projekt ablakban. Látja, hogy a projektben új modul szerepel. A modul neve attól függ, hogy volt-e más modul a munkafüzetben, amikor elkezdte a makró rögzítését. Ha nem, akkor a modul neve Module1. A modulra duplán kattintva megtekintheti a modul kódablakát.
Íme a műveletei által generált kód:
Sub TenByTen()
'
TenByTen makró
'
Billentyűparancs: Ctrl+Shift+T
'
Sheets.Add After:=ActiveSheet
Oszlopok ("K:K"). Válassza ki
Tartomány(kijelölés, kijelölés.vég(xljobbra)).Kiválasztás
Selection.EntireColumn.Hidden = Igaz
Sorok("11:11"). Válassza a lehetőséget
Tartomány(Kiválasztás, Kiválasztás.Vége(xlLe)).Válassza ki
Selection.EntireRow.Hidden = Igaz
Tartomány("A1").Válassza ki
Vége Sub
A makró kipróbálásához aktiváljon bármely munkalapot, és nyomja meg a 4. lépésben hozzárendelt gyorsbillentyűt: Ctrl+Shift+T.
Ha nem rendelt gyorsbillentyűt a makróhoz, ne aggódjon. Így jelenítheti meg az összes elérhető makró listáját, és futtassa a kívántat:
Válassza a Fejlesztő → Kód → Makrók lehetőséget. A billentyűzet rajongói lenyomhatják az Alt+F8 billentyűket.
Ezen módszerek bármelyike megjelenít egy párbeszédpanelt, amely felsorolja az összes elérhető makrót.
Válassza ki a makrót a listából (ebben az esetben a TenByTen).
Kattintson a Futtatás gombra.
Az Excel végrehajtja a makrót, és kap egy új munkalapot tíz látható sorral és tíz látható oszloppal.
A makrórögzítő futása közben tetszőleges számú parancsot és műveletet hajthat végre. Az Excel kötelességtudóan lefordítja az egérműveleteket és a billentyűleütéseket VBA-kódra.
És természetesen a makrót a rögzítés után is szerkesztheti. Új készségei teszteléséhez próbálja meg szerkeszteni a makrót úgy, hogy az egy kilenc látható sort és oszlopot tartalmazó munkalapot szúrjon be – tökéletes egy Sudoku-rejtvényhez.
VBA kód másolása
A kód VBA-modulba való bejuttatásának végső módja az, hogy átmásoljuk egy másik modulból vagy más helyről (például egy webhelyről). Például az egyik projekthez írt al- vagy függvényeljárás egy másik projektben is hasznos lehet. Ahelyett, hogy időt vesztegetne a kód újbóli beírásával, aktiválhatja a modult, és használhatja a normál vágólap másolási és beillesztési eljárásokat. (Valószínűleg jobban szereti a Ctrl+C billentyűkombinációt a másoláshoz és a Ctrl+V beillesztéshez.) Miután beilleszti a kódot egy VBA-modulba, szükség esetén módosíthatja a kódot.
Mellesleg, rengeteg példát találhat VBA kódra a weben. Ha ki szeretné próbálni őket, válassza ki a kódot a böngészőjében, és nyomja le a Ctrl+C billentyűkombinációt a másolásához. Ezután aktiváljon egy modult, és nyomja meg a Ctrl+V billentyűkombinációt a beillesztéshez.
Amikor kódot másol egy webhelyről, néha némi javításra van szükség. Például az idézőjelek lehetnek „intelligens idézőjelek”, és ezeket egyszerű idézőjelekké kell alakítani. És néha hosszú sorok kígyóznak körbe. A hibás állításokat könnyű észrevenni a VBE-ben, mert piros színnel jelennek meg.