Kai įgyjate įgūdžių dirbti su Excel VBA, daug laiko praleidžiate dirbdami kodo languose. Įrašytos makrokomandos yra saugomos modulyje, o „Excel“ VBA kodą galite įvesti tiesiai VBA modulyje.
VBA kodo langų sumažinimas ir padidinimas
Jei atidarėte kelis projektus, VBE bet kuriuo metu gali turėti daug kodo langų.
Kodo lango perkrova nėra gražus vaizdas.
Kodo langai yra labai panašūs į darbaknygės langus programoje „Excel“. Galite juos sumažinti, padidinti, pakeisti dydį, paslėpti, pertvarkyti ir pan. Daugeliui žmonių daug lengviau padidinti kodo langą, kuriame jie dirba. Taip matysite daugiau kodo ir nesiblašysite.
Norėdami padidinti kodo langą, spustelėkite jo pavadinimo juostoje esantį mygtuką Didinti (tiesiai šalia X). Arba tiesiog dukart spustelėkite pavadinimo juostą, kad ją padidintumėte. Norėdami atkurti kodo lango pradinį dydį, spustelėkite mygtuką Atkurti. Kai langas yra padidintas, jo pavadinimo juosta nėra matoma, todėl mygtuką Atkurti rasite po VBE pavadinimo juosta.
Kartais galbūt norėsite matyti du ar daugiau kodo langų. Pavyzdžiui, galbūt norėsite palyginti dviejų modulių kodą arba nukopijuoti kodą iš vieno modulio į kitą. Langus galite išdėstyti rankiniu būdu arba pasirinkti Langas → Išklotinės horizontaliai arba Langas → Plytelės vertikaliai, kad juos išdėstytumėte automatiškai.
Galite greitai perjungti kodo langus paspausdami Ctrl+F6. Jei pakartosite tą klavišų kombinaciją, toliau važiuosite per visus atidarytus kodo langus. Paspaudus Ctrl+Shift+F6, langai perjungiami atvirkštine tvarka. (Norėdami gauti daugiau informacijos, peržiūrėkite šiuos Excel VBA sparčiuosius klavišus .)
Sumažinus kodo langą, jis bus pašalintas. Taip pat galite spustelėti lango mygtuką Uždaryti (kuris rodo X) kodo lango pavadinimo juostoje, kad uždarytumėte langą. (Uždarius langą jis tiesiog paslepiamas; nieko neprarasite.) Norėdami jį vėl atidaryti, tiesiog dukart spustelėkite atitinkamą objektą projekto lange. Beje, dirbti su šiais kodo langais skamba sunkiau nei yra iš tikrųjų.
VBA modulio kūrimas
Paprastai „Excel“ VBA modulyje gali būti trijų tipų kodai:
- Deklaracijos: vienas ar daugiau informacijos teiginių, kuriuos pateikiate VBA. Pavyzdžiui, galite deklaruoti planuojamų naudoti kintamųjų duomenų tipą arba nustatyti kitas modulio parinktis. Deklaracijos iš esmės yra namų tvarkymo ataskaitos. Jie iš tikrųjų nėra įvykdyti.
- Papildomos procedūros: programavimo instrukcijų rinkinys, kuris, kai jis vykdomas, atlieka tam tikrą veiksmą.
- Funkcijų procedūros: programavimo instrukcijų rinkinys, grąžinantis vieną reikšmę (koncepcija panaši į darbalapio funkciją, pvz., SUM).
Viename VBA modulyje galima saugoti bet kokį skaičių papildomų procedūrų, funkcijų procedūrų ir deklaracijų. Na, yra limitas – apie 64 000 simbolių viename modulyje. Mažai tikėtina, kad net priartėsite prie 64 000 simbolių limito. Bet jei tai padarėte, sprendimas yra paprastas: tiesiog įdėkite naują modulį.
Kaip organizuoti VBA modulį, visiškai priklauso nuo jūsų. Kai kurie žmonės nori laikyti visą programos VBA kodą viename VBA modulyje; kiti mėgsta padalyti kodą į kelis modulius. Tai asmeninis pasirinkimas, kaip ir baldų išdėstymas.
VBA kodo įvedimas į modulį
Tuščias VBA modulis yra tarsi netikras maistas, kurį matote kai kurių kinų restoranų languose; atrodo gerai, bet tau tai tikrai neduoda jokios naudos. Kad galėtumėte daryti ką nors prasmingo, VBA modulyje turite turėti VBA kodą. VBA kodą į VBA modulį galite gauti trimis būdais:
- Įveskite kodą tiesiogiai.
- Naudokite „Excel“ makrokomandų įrašymo priemonę, kad įrašytumėte savo veiksmus ir konvertuotumėte juos į VBA kodą.
- Nukopijuokite kodą iš vieno modulio ir įklijuokite jį į kitą.
Tiesioginis Excel VBA kodo įvedimas
Kartais geriausias maršrutas yra tiesiausias. Kodo įvedimas tiesiogiai apima... na, kodo įvedimas tiesiogiai. Kitaip tariant, kodą įvedate naudodami klaviatūrą. Teksto įvedimas ir redagavimas VBA modulyje veikia taip, kaip tikitės. Galite pasirinkti, kopijuoti, iškirpti, įklijuoti ir atlikti kitus veiksmus su tekstu.
Naudokite klavišą Tab, kad įtrauktumėte kai kurias eilutes, kad kodą būtų lengviau skaityti. Įtrauka nebūtina, bet tai yra geras įprotis įgyti. Studijuodami Excel VBA kodavimą suprasite, kodėl kodo eilučių įtrauka yra naudinga.
Viena VBA kodo eilutė gali būti tiek ilga, kiek jums reikia. Tačiau, norėdami suskaidyti ilgas kodo eilutes, galbūt norėsite naudoti eilutės tęsimo simbolius. Norėdami tęsti vieną kodo eilutę (taip pat žinomą kaip teiginį) iš vienos eilutės į kitą, pirmąją eilutę užbaikite tarpu ir pabraukimu (_). Tada tęskite teiginį kitoje eilutėje. Ir nepamirškite erdvės. Pabraukimo simbolis, prieš kurį nėra tarpo, neatliks savo darbo.
Štai vieno teiginio, suskaidyto į tris eilutes, pavyzdys:
Selection.Sort Key1:=Range("A1"), _
Order1:=xlDidėjantis, Antraštė:=xlAtspėk, _
Orientacija:=xlTopToBottom
Šis teiginys veiktų lygiai taip pat, jei būtų įvestas vienoje eilutėje (be eilutės tęsinio simbolių). Atkreipkite dėmesį, kad antroji ir trečioji šio teiginio eilutės yra įtrauktos. Įtrauka yra neprivaloma, tačiau tai padeda paaiškinti, kad šios eilutės nėra atskiri teiginiai.
Baltai dengti inžinieriai, sukūrę VBE, numatė, kad žmonės darys klaidų. Todėl VBE turi kelis anuliavimo ir perdarymo lygius. Jei ištrynėte teiginį, kurio neturėjote, įrankių juostoje spustelėkite mygtuką Anuliuoti (arba paspauskite Ctrl+Z), kol teiginys vėl pasirodys. Atšaukę galite spustelėti mygtuką Perdaryti, kad atliktumėte anuliuotus pakeitimus.
Ar esate pasirengęs įvesti realų kodą? Išbandykite šiuos veiksmus:
Sukurkite naują darbaknygę programoje „Excel“.
Paspauskite Alt + F11, kad suaktyvintumėte VBE.
Projekto lange spustelėkite naujos darbaknygės pavadinimą.
Norėdami į projektą įterpti VBA modulį, pasirinkite Įterpti → Modulis.
Į modulį įveskite šį kodą:
Sub GuessName()
Msg = "Ar jūsų vardas " & Application.UserName & "?"
Ans = MsgBox(Msg, vbYesNo)
Jei Ans = vbNo Tada MsgBox "O, nesvarbu."
Jei Ans = vbYes Tada MsgBox "Aš turiu būti ekstrasensas!"
Pabaigos sub
Perkelkite žymeklį į bet kurią įvesto teksto vietą ir paspauskite F5, kad atliktumėte procedūrą.
F5 yra spartusis klavišas Vykdyti → Vykdyti antrinę/vartotojo formą. Jei teisingai įvedėte kodą, „Excel“ atlieka procedūrą ir galite atsakyti į paprastą dialogo langą. Tekstas dialogo lange skirsis nuo čia rodomo.
„GuessName“ procedūra rodo šį dialogo langą.
Kai įvesite 5 veiksme nurodytą kodą, galite pastebėti, kad VBE šiek tiek pakoreguoja įvestą tekstą. Pavyzdžiui, po to, kai įvesite sub teiginį, VBE automatiškai įterpia teiginį End Sub. Ir jei praleidžiate tarpą prieš arba po lygybės ženklo, VBE įterpia tarpą jums. Be to, VBE keičia kai kurių tekstų spalvą ir didžiąsias raides. Visa tai yra visiškai normalu. Tai tik VBE būdas išlaikyti tvarkingus ir skaitomus dalykus.
Jei atlikote ankstesnius veiksmus, ką tik parašėte VBA antrinę procedūrą, taip pat žinomą kaip makrokomandą. Kai paspausite F5, „Excel“ vykdo kodą ir vykdo instrukcijas. Kitaip tariant, „Excel“ įvertina kiekvieną teiginį ir daro tai, ką liepėte daryti. (Neleiskite šiai naujai atrastai galiai eiti į galvą.) Šią makrokomandą galite vykdyti bet kokį skaičių kartų, nors po kelių dešimčių kartų ji praranda savo patrauklumą.
Įrašams, šioje paprastoje „Excel“ makrokomandoje naudojamos šios sąvokos:
- Papildomos procedūros apibrėžimas (pirmoji eilutė)
- Reikšmių priskyrimas kintamiesiems (Msg ir Ans)
- Concatenating (prisijungti) eilutę (naudojant ir operatorius)
- Naudojant integruotą VBA funkciją („MsgBox“)
- Naudojant integruotas VBA konstantas (vbYesNo, vbNo ir vbYes)
- „Jei-tada“ konstrukcijos naudojimas (du kartus)
- Papildomos procedūros pabaiga (paskutinė eilutė)
Naudojant Excel VBA makrokomandų įrašymo įrenginį
Kitas būdas gauti kodą į VBA modulį yra įrašyti savo veiksmus naudojant „Excel“ makrokomandų įrašymo įrenginį.
Beje, jūs visiškai negalite įrašyti aukščiau nurodytos GuessName procedūros. Programoje „Excel“ galite įrašyti tik tuos dalykus, kuriuos galite atlikti tiesiogiai. Pranešimo laukelio rodymas nėra įprastas „Excel“ repertuaras. (Tai VBA dalykas.) Makrokomandų įrašymo priemonė yra naudinga, tačiau daugeliu atvejų tikriausiai turėsite įvesti bent kodą rankiniu būdu.
Štai nuoseklus pavyzdys, kuriame parodyta, kaip įrašyti makrokomandą, kuri įterpia naują darbalapį ir paslepia visas, išskyrus pirmąsias dešimt eilučių ir visus, išskyrus dešimt pirmųjų stulpelių. Jei norite išbandyti šį pavyzdį, pradėkite nuo naujos tuščios „Excel“ darbaknygės ir atlikite šiuos veiksmus:
Suaktyvinkite darbalapį darbaknygėje.
Tiks bet koks „Excel“ darbalapis.
Spustelėkite skirtuką Kūrėjas ir įsitikinkite, kad Naudoti santykines nuorodas nėra paryškinta.
Ši makrokomanda įrašyta naudojant absoliučias nuorodas.
Pasirinkite Kūrėjas → Kodas → Įrašyti makrokomandą arba spustelėkite piktogramą, esančią šalia indikatoriaus Pasirengimas kairiajame būsenos juostos gale.
„Excel“ rodo dialogo langą Įrašyti makrokomandą.
Dialogo lange Įrašyti makrokomandą suteikite makrokomandai pavadinimą TenByTen, nurodykite, kad makrokomandą norite išsaugoti šioje darbaknygėje, ir paspauskite Shift + T, kad būtų rodomas spartusis klavišas.
Makrokomandą galima vykdyti paspaudus Ctrl+Shift+T.
Spustelėkite Gerai, kad pradėtumėte įrašymą. „Excel“ automatiškai įterpia naują VBA modulį į projektą, atitinkantį aktyvią darbaknygę.
Nuo šio momento „Excel“ konvertuoja jūsų veiksmus į VBA kodą. Kol įrašote, piktograma būsenos juostoje virsta mažu kvadratu. Tai priminimas, kad makrokomandos įrašymo priemonė veikia. Taip pat galite spustelėti šią piktogramą, kad sustabdytumėte makrokomandų įrašymo įrenginį.
Spustelėkite naujo lapo piktogramą, esančią paskutinio lapo skirtuko dešinėje.
„Excel“ įterpia naują darbalapį.
Pasirinkite visą K stulpelį (11 stulpelį) ir paspauskite Ctrl+Shift+rodyklė dešinėn; tada dešiniuoju pelės mygtuku spustelėkite bet kurį pasirinktą stulpelį ir nuorodų meniu pasirinkite Slėpti.
„Excel“ paslepia visus pasirinktus stulpelius.
Pasirinkite visą 11 eilutę ir paspauskite Ctrl+Shift+rodyklė žemyn; tada dešiniuoju pelės mygtuku spustelėkite bet kurią pasirinktą eilutę ir nuorodų meniu pasirinkite Slėpti.
„Excel“ paslepia visus pasirinktus stulpelius.
Pasirinkite langelį A1.
Pasirinkite Kūrėjas → Kodas → Sustabdyti įrašymą arba spustelėkite mygtuką Sustabdyti įrašymą būsenos juostoje (mažame kvadrate). „Excel“ nustoja įrašyti jūsų veiksmus.
Norėdami peržiūrėti šią naujai įrašytą makrokomandą, paspauskite Alt + F11, kad suaktyvintumėte VBE. Projekto lange raskite darbaknygės pavadinimą. Matote, kad projekte yra naujas modulis. Modulio pavadinimas priklauso nuo to, ar darbaknygėje buvo kitų modulių, kai pradėjote įrašyti makrokomandą. Jei to nepadarėte, modulis bus pavadintas Module1. Galite du kartus spustelėti modulį, kad pamatytumėte modulio kodo langą.
Štai jūsų veiksmų sugeneruotas kodas:
Sub TenByTen()
'
TenByTen makrokomandą
'
Spartusis klaviatūros klavišas: Ctrl + Shift + T
'
Sheets.Add After:=ActiveSheet
Stulpeliai ("K:K"). Pasirinkite
Diapazonas (Pasirinkimas, pasirinkimas. Pabaiga (xlToRight)).Pasirinkite
Selection.EntireColumn.Hidden = Tiesa
Eilutės("11:11"). Pasirinkite
Diapazonas (Pasirinkimas, pasirinkimas. Pabaiga (xlDown)).Pasirinkite
Selection.EntireRow.Hidden = Tiesa
Diapazonas („A1“). Pasirinkite
Pabaigos sub
Norėdami išbandyti šią makrokomandą, suaktyvinkite bet kurį darbalapį ir paspauskite spartųjį klavišą, kurį priskyrėte atlikdami 4 veiksmą: Ctrl + Shift + T.
Jei makrokomandai nepriskyrėte sparčiojo klavišo, nesijaudinkite. Štai kaip parodyti visų galimų makrokomandų sąrašą ir paleisti norimą:
Pasirinkite Kūrėjas → Kodas → Makrokomandos. Klaviatūros gerbėjai gali paspausti Alt + F8.
Bet kuris iš šių metodų rodo dialogo langą, kuriame pateikiamos visos galimos makrokomandos.
Sąraše pasirinkite makrokomandą (šiuo atveju TenByTen).
Spustelėkite mygtuką Vykdyti.
„Excel“ vykdo makrokomandą ir gausite naują darbalapį su dešimčia matomų eilučių ir dešimčia matomų stulpelių.
Galite vykdyti bet kokį skaičių komandų ir atlikti bet kokį skaičių veiksmų, kol veikia makrokomandų įrašymo priemonė. „Excel“ pareigingai verčia pelės veiksmus ir klavišų paspaudimus į VBA kodą.
Ir, žinoma, galite redaguoti makrokomandą ją įrašę. Norėdami išbandyti savo naujus įgūdžius, pabandykite redaguoti makrokomandą taip, kad ji įterptų darbalapį su devyniomis matomomis eilutėmis ir stulpeliais – puikiai tinka „Sudoku“ galvosūkiui.
Kopijuojamas VBA kodas
Paskutinis būdas gauti kodą į VBA modulį yra nukopijuoti jį iš kito modulio arba iš kitos vietos (pvz., svetainės). Pavyzdžiui, pogrupio arba funkcijos procedūra, kurią rašote vienam projektui, taip pat gali būti naudinga kitame projekte. Užuot gaišę laiką pakartotinai įvesdami kodą, galite aktyvuoti modulį ir naudoti įprastas mainų srities kopijavimo ir įklijavimo procedūras. (Tikriausiai jums labiau patinka spartieji klavišai Ctrl+C, norėdami nukopijuoti, ir Ctrl+V, norėdami įklijuoti.) Įklijavę kodą į VBA modulį, galite jį modifikuoti, jei reikia.
Beje, internete rasite daug VBA kodo pavyzdžių. Jei norite juos išbandyti, naršyklėje pasirinkite kodą ir paspauskite Ctrl+C, kad jį nukopijuotumėte. Tada suaktyvinkite modulį ir paspauskite Ctrl+V, kad jį įklijuotumėte.
Kai kopijuojate kodą iš svetainės, kartais jį reikia pataisyti. Pavyzdžiui, kabučių simboliai gali būti „išmaniosios kabutės“ ir juos reikia konvertuoti į paprastus kabučių simbolius. O kartais nusidriekia ilgos eilės. Klaidingus teiginius lengva pastebėti VBE, nes jie rodomi raudonai.