Kļūstot par prasmēm darbā ar Excel VBA, jūs pavadāt daudz laika, strādājot koda logos. Ierakstītie makro tiek glabāti modulī, un jūs varat ierakstīt Excel VBA kodu tieši VBA modulī.
VBA koda logu samazināšana un palielināšana
Ja jums ir atvērti vairāki projekti, VBE jebkurā laikā var būt daudz koda logu.
Koda loga pārslodze nav patīkams skats.
Koda logi ir līdzīgi darbgrāmatas logi programmā Excel. Varat tos samazināt, palielināt, mainīt izmērus, paslēpt, pārkārtot utt. Lielākajai daļai cilvēku ir daudz vieglāk palielināt koda logu, pie kura viņi strādā. To darot, varat redzēt vairāk koda un novērst uzmanību.
Lai palielinātu koda logu, noklikšķiniet uz pogas Maksimizēt tā virsrakstjoslā (tieši blakus X). Vai vienkārši veiciet dubultklikšķi uz tās virsrakstjoslas, lai to palielinātu. Lai atjaunotu koda loga sākotnējo izmēru, noklikšķiniet uz pogas Atjaunot. Kad logs ir maksimizēts, tā virsrakstjosla nav redzama, tāpēc poga Atjaunot atrodas zem VBE virsrakstjoslas.
Dažreiz var vēlēties, lai būtu redzami divi vai vairāki koda logi. Piemēram, iespējams, vēlēsities salīdzināt kodu divos moduļos vai kopēt kodu no viena moduļa uz citu. Varat kārtot logus manuāli vai izvēlēties Logs → Flīzēšana horizontāli vai Logs → Flīzēt vertikāli, lai tos sakārtotu automātiski.
Varat ātri pārslēgties starp koda logiem, nospiežot Ctrl+F6. Ja atkārtojat šo taustiņu kombināciju, jūs turpināsit pārvietoties pa visiem atvērtajiem koda logiem. Nospiežot taustiņu kombināciju Ctrl+Shift+F6, tiek atvērti logi apgrieztā secībā. (Lai iegūtu plašāku informāciju, skatiet šos Excel VBA īsinājumtaustiņus .)
Samazinot koda logu, tas tiek novērsts. Lai aizvērtu logu, koda loga virsrakstjoslā varat arī noklikšķināt uz loga pogas Aizvērt (kas parāda X). (Aizverot logu, tas vienkārši tiek paslēpts; jūs neko nezaudēsit.) Lai to atvērtu vēlreiz, vienkārši veiciet dubultklikšķi uz atbilstošā objekta projekta logā. Starp citu, darbs ar šiem Code logiem izklausās grūtāks nekā patiesībā ir.
VBA moduļa izveide
Parasti Excel VBA modulī var būt trīs veidu kodi:
- Deklarācijas: viens vai vairāki informācijas paziņojumi, ko sniedzat VBA. Piemēram, varat deklarēt datu tipu mainīgajiem, kurus plānojat izmantot, vai iestatīt dažas citas moduļa mēroga opcijas. Deklarācijas būtībā ir mājturības paziņojumi. Tie faktiski netiek izpildīti.
- Apakšprocedūras: programmēšanas instrukciju kopa, kas, izpildot, veic kādu darbību.
- Funkciju procedūras: programmēšanas instrukciju kopa, kas atgriež vienu vērtību (koncepcijas ziņā līdzīga darblapas funkcijai, piemēram, SUM).
Viens VBA modulis var uzglabāt neierobežotu skaitu apakšprocedūru, funkciju procedūru un deklarāciju. Nu, ir ierobežojums — aptuveni 64 000 rakstzīmju katrā modulī. Maz ticams, ka jūs pat pietuvosities 64 000 rakstzīmju ierobežojuma sasniegšanai. Bet, ja jūs to izdarījāt, risinājums ir vienkāršs: vienkārši ievietojiet jaunu moduli.
Tas, kā organizēt VBA moduli, ir pilnībā atkarīgs no jums. Daži cilvēki dod priekšroku visu lietojumprogrammas VBA kodu paturēt vienā VBA modulī; citiem patīk sadalīt kodu vairākos moduļos. Tā ir personīga izvēle, tāpat kā mēbeļu sakārtošana.
VBA koda iegūšana modulī
Tukšs VBA modulis ir kā viltots ēdiens, ko redzat dažu ķīniešu restorānu logos; tas izskatās labi, bet patiesībā tas jums neko daudz nedod. Lai varētu darīt kaut ko nozīmīgu, VBA modulī ir jābūt VBA kodam. Varat iegūt VBA kodu VBA modulī trīs veidos:
- Ievadiet kodu tieši.
- Izmantojiet Excel makro ierakstītāju, lai reģistrētu savas darbības un pārvērstu tās par VBA kodu.
- Nokopējiet kodu no viena moduļa un ielīmējiet to citā.
Excel VBA koda tieša ievadīšana
Dažreiz labākais maršruts ir vistiešākais. Koda ievadīšana tieši ietver ... nu, koda ievadīšanu tieši. Citiem vārdiem sakot, jūs ierakstāt kodu, izmantojot tastatūru. Teksta ievadīšana un rediģēšana VBA modulī darbojas tā, kā jūs varētu gaidīt. Varat atlasīt, kopēt, izgriezt, ielīmēt tekstu un veikt citas darbības.
Izmantojiet tabulēšanas taustiņu, lai ievilktu dažas rindas, lai kods būtu vieglāk lasāms. Atkāpe nav nepieciešama, taču tas ir labs ieradums, kas jāiegūst. Izpētot Excel VBA kodēšanu, jūs sapratīsit, kāpēc koda rindu atkāpe ir noderīga.
Viena VBA koda rindiņa var būt tik gara, cik nepieciešams. Tomēr, iespējams, vēlēsities izmantot rindiņas turpinājuma rakstzīmes, lai sadalītu garas koda rindas. Lai turpinātu vienu koda rindiņu (pazīstamu arī kā paziņojumu) no vienas rindiņas uz nākamo, pabeidziet pirmo rindiņu ar atstarpi, kam seko pasvītra (_). Pēc tam turpiniet paziņojumu nākamajā rindā. Un neaizmirstiet par vietu. Pasvītra rakstzīme, kuras priekšā nav atstarpe, to nedarīs.
Šeit ir piemērs viena paziņojumam, kas sadalīts trīs rindās:
Selection.Sort Key1:=Range("A1"), _
Order1:=xlaugošā secībā, Header:=xlUzmini, _
Orientācija:=xlTopToBottom
Šis paziņojums darbotos tieši tāpat, ja tas tiktu ievadīts vienā rindā (bez rindas turpinājuma rakstzīmēm). Ņemiet vērā, ka šī paziņojuma otrā un trešā rindiņa ir ar atkāpi. Atkāpe nav obligāta, taču tā palīdz noskaidrot, ka šīs rindas nav atsevišķi paziņojumi.
Inženieri ar baltu pārklājumu, kas izstrādāja VBE, paredzēja, ka cilvēki pieļaus kļūdas. Tāpēc VBE ir vairāki atsaukšanas un pārtaisīšanas līmeņi. Ja izdzēsāt priekšrakstu, kuram nevajadzētu būt, rīkjoslā noklikšķiniet uz pogas Atsaukt (vai nospiediet taustiņu kombināciju Ctrl+Z), līdz paziņojums atkal tiek parādīts. Pēc atsaukšanas varat noklikšķināt uz pogas Atsaukt, lai veiktu atsauktās izmaiņas.
Vai esat gatavs ievadīt reāllaika kodu? Izmēģiniet tālāk norādītās darbības.
Izveidojiet jaunu darbgrāmatu programmā Excel.
Nospiediet Alt+F11, lai aktivizētu VBE.
Projekta logā noklikšķiniet uz jaunās darbgrāmatas nosaukuma.
Izvēlieties Ievietot → Modulis, lai projektā ievietotu VBA moduli.
Modulī ierakstiet šādu kodu:
Sub GuessName()
Msg = "Vai jūsu vārds ir " & Application.UserName & "?"
Ans = MsgBox(Ziņojums, vbYesNo)
Ja Ans = vbNo Tad MsgBox "Ak, nekas."
Ja Ans = vbYes Tad MsgBox "Man ir jābūt psihikam!"
Beigt apakš
Novietojiet kursoru jebkurā ievadītā teksta vietā un nospiediet taustiņu F5, lai izpildītu procedūru.
F5 ir saīsne Palaist → Palaist apakšpakalpojumu/lietotāja veidlapu. Ja kodu ievadījāt pareizi, programma Excel izpilda procedūru, un jūs varat atbildēt uz vienkāršu dialoglodziņu. Teksts dialoglodziņā atšķirsies no šeit redzamā teksta.
GuessName procedūra parāda šo dialoglodziņu.
Ievadot 5. darbībā norādīto kodu, iespējams, pamanīsit, ka VBE jūsu ievadītajā tekstā veic dažus pielāgojumus. Piemēram, pēc Subpriekšraksta ievadīšanas VBE automātiski ievieto priekšrakstu End Sub. Un, ja jūs izlaižat atstarpi pirms vai pēc vienādības zīmes, VBE ievieto atstarpi jums. Tāpat VBE maina dažu tekstu krāsu un lielo burtu lietojumu. Tas viss ir pilnīgi normāli. Tas ir tikai VBE veids, kā uzturēt lietas kārtīgas un lasāmas.
Ja veicāt iepriekšējās darbības, jūs tikko uzrakstījāt VBA apakšprocedūru, kas pazīstama arī kā makro. Nospiežot taustiņu F5, programma Excel izpilda kodu un izpilda norādījumus. Citiem vārdiem sakot, programma Excel novērtē katru paziņojumu un dara to, ko jūs tam likāt. (Neļaujiet šim jaunatklātajam spēkam iet uz jūsu galvu.) Varat izpildīt šo makro neierobežotu skaitu reižu, lai gan tas mēdz zaudēt savu pievilcību pēc dažiem desmitiem reižu.
Šajā vienkāršajā Excel makro ir izmantoti šādi jēdzieni:
- Apakšprocedūras noteikšana (pirmā rinda)
- Vērtību piešķiršana mainīgajiem (Msg un Ans)
- Konkatenācijas (iestāšanās) virkni (izmantojot & operators)
- Izmantojot iebūvēto VBA funkciju (MsgBox)
- Izmantojot iebūvētās VBA konstantes (vbYesNo, vbNo un vbYes)
- Ja-tad konstrukcijas izmantošana (divas reizes)
- Apakšprocedūras beigšana (pēdējā rinda)
Izmantojot Excel VBA makro ierakstītāju
Vēl viens veids, kā iegūt kodu VBA modulī, ir ierakstīt savas darbības, izmantojot Excel makro ierakstītāju.
Starp citu, jūs nevarat ierakstīt iepriekš parādīto GuessName procedūru. Programmā Excel varat ierakstīt tikai tās lietas, kuras varat veikt tieši. Ziņojuma lodziņa parādīšana nav iekļauta Excel parastajā repertuārā. (Tā ir VBA lieta.) Makro ierakstītājs ir noderīgs, taču daudzos gadījumos jums, iespējams, būs jāievada vismaz kāds kods manuāli.
Šeit ir soli pa solim sniegts piemērs, kurā parādīts, kā ierakstīt makro, kas ievieto jaunu darblapu un paslēpj visas, izņemot pirmās desmit rindas un visas, izņemot pirmās desmit kolonnas. Ja vēlaties izmēģināt šo piemēru, sāciet ar jaunu, tukšu Excel darbgrāmatu un veiciet šīs darbības:
Aktivizējiet darblapu darbgrāmatā.
Derēs jebkura Excel darblapa.
Noklikšķiniet uz cilnes Izstrādātājs un pārliecinieties, vai nav iezīmēta opcija Izmantot relatīvās atsauces .
Šis makro tiek ierakstīts, izmantojot absolūtās atsauces.
Izvēlieties Izstrādātājs → Kods → Ierakstīt makro vai noklikšķiniet uz ikonas blakus Gatavības indikatoram statusa joslas kreisajā galā.
Programmā Excel tiek parādīts dialoglodziņš Ierakstīt makro.
Dialoglodziņā Makro ierakstīšana piešķiriet makro nosaukumu TenByTen, norādiet, ka makro vēlaties saglabāt šajā darbgrāmatā, un nospiediet taustiņu kombināciju Shift+T, lai ievadītu īsinājumtaustiņu.
Makro var izpildīt, nospiežot Ctrl+Shift+T.
Noklikšķiniet uz Labi, lai sāktu ierakstīšanu. Programma Excel projektā automātiski ievieto jaunu VBA moduli, kas atbilst aktīvajai darbgrāmatai.
No šī brīža programma Excel pārvērš jūsu darbības VBA kodā. Ierakstīšanas laikā ikona statusa joslā kļūst par nelielu kvadrātu. Šis ir atgādinājums, ka darbojas makro ierakstītājs. Varat arī noklikšķināt uz šīs ikonas, lai apturētu makro ierakstītāju.
Pēdējās lapas cilnes labajā pusē noklikšķiniet uz ikonas Jauna lapa.
Excel ievieto jaunu darblapu.
Atlasiet visu kolonnu K (11. kolonnu) un nospiediet Ctrl+Shift+labā bultiņa; pēc tam ar peles labo pogu noklikšķiniet uz jebkuras atlasītās kolonnas un īsinājumizvēlnē izvēlieties Slēpt.
Programma Excel slēpj visas atlasītās kolonnas.
Atlasiet visu 11. rindu un nospiediet Ctrl+Shift+lejupbultiņa; pēc tam ar peles labo pogu noklikšķiniet uz jebkuras atlasītās rindas un īsinājumizvēlnē izvēlieties Slēpt.
Programma Excel slēpj visas atlasītās kolonnas.
Atlasiet šūnu A1.
Izvēlieties Izstrādātājs → Kods → Pārtraukt ierakstīšanu vai noklikšķiniet uz pogas Pārtraukt ierakstīšanu statusa joslā (mazajā kvadrātā). Programma Excel pārstāj reģistrēt jūsu darbības.
Lai skatītu šo tikko ierakstīto makro, nospiediet Alt+F11, lai aktivizētu VBE. Logā Projekts atrodiet darbgrāmatas nosaukumu. Jūs redzat, ka projektā ir norādīts jauns modulis. Moduļa nosaukums ir atkarīgs no tā, vai, uzsākot makro ierakstīšanu, darbgrāmatā bija kādi citi moduļi. Ja to nedarījāt, modulis tiek nosaukts Module1. Varat veikt dubultklikšķi uz moduļa, lai skatītu moduļa koda logu.
Šis ir jūsu darbību ģenerētais kods:
Sub TenByTen()
'
TenByTen makro
'
Tastatūras īsinājumtaustiņš: Ctrl+Shift+T
'
Sheets.Add After:=Active Sheet
Kolonnas("K:K").Atlasiet
Diapazons(Atlase, Atlase.Beigas(xlToRight)).Atlasiet
Selection.EntireColumn.Hidden = True
Rindas("11:11").Atlasiet
Diapazons(Atlase, Atlase.Beigas(xlUz leju)).Atlasiet
Selection.EntireRow.Hidden = True
Diapazons("A1").Atlasiet
Beigt apakš
Lai izmēģinātu šo makro, aktivizējiet jebkuru darblapu un nospiediet 4. darbībā piešķirto īsinājumtaustiņu: Ctrl+Shift+T.
Ja makro nepiešķīrāt īsinājumtaustiņu, neuztraucieties. Tālāk ir norādīts, kā parādīt visu pieejamo makro sarakstu un palaist vajadzīgo.
Izvēlieties Izstrādātājs → Kods → Makro. Tastatūras fani var nospiest Alt+F8.
Jebkura no šīm metodēm parāda dialoglodziņu, kurā ir uzskaitīti visi pieejamie makro.
Sarakstā atlasiet makro (šajā gadījumā TenByTen).
Noklikšķiniet uz pogas Palaist.
Programma Excel izpilda makro, un jūs saņemat jaunu darblapu ar desmit redzamām rindām un desmit redzamām kolonnām.
Kamēr darbojas makro ierakstītājs, varat izpildīt neierobežotu skaitu komandu un veikt neierobežotu skaitu darbību. Excel apzinīgi pārvērš jūsu peles darbības un taustiņsitienus VBA kodā.
Un, protams, varat arī rediģēt makro pēc tā ierakstīšanas. Lai pārbaudītu savas jaunās prasmes, mēģiniet rediģēt makro tā, lai tajā tiktu ievietota darblapa ar deviņām redzamām rindām un kolonnām — lieliski piemērota Sudoku mīklai.
Notiek VBA koda kopēšana
Pēdējā metode koda ievadīšanai VBA modulī ir tā kopēšana no cita moduļa vai citas vietas (piemēram, vietnes). Piemēram, apakšprogrammas vai funkcijas procedūra, ko rakstāt vienam projektam, var būt noderīga arī citā projektā. Tā vietā, lai tērētu laiku, atkārtoti ievadot kodu, varat aktivizēt moduli un izmantot parastās starpliktuves kopēšanas un ielīmēšanas procedūras. (Jums droši vien patīk īsinājumtaustiņi Ctrl+C, lai kopētu, un Ctrl+V, lai ielīmētu.) Pēc koda ielīmēšanas VBA modulī varat modificēt kodu, ja nepieciešams.
Starp citu, tīmeklī atradīsit daudz VBA kodu piemēru. Ja vēlaties tos izmēģināt, pārlūkprogrammā atlasiet kodu un nospiediet Ctrl+C, lai to kopētu. Pēc tam aktivizējiet moduli un nospiediet Ctrl+V, lai to ielīmētu.
Kopējot kodu no vietnes, dažkārt tas ir jālabo. Piemēram, citātu rakstzīmes var būt “viedās pēdiņas”, un tās ir jāpārvērš par vienkāršām pēdiņu rakstzīmēm. Un dažreiz apkārt vijas garas rindas. Kļūdainus paziņojumus ir viegli pamanīt VBE, jo tie parādās sarkanā krāsā.