Tāpat kā cilvēkiem, mājdzīvniekiem un viesuļvētrām, katrai Excel VBA apakš un funkciju procedūrai ir jābūt nosaukumam. Lai gan ir pilnīgi pieņemami nosaukt savu suni par Hairball Harris, parasti nav ieteicams izmantot šādu brīvu attieksmi, nosaucot Excl VBA procedūras. Nosaucot Excel VBA procedūras, jums jāievēro daži noteikumi:
- Varat izmantot burtus, ciparus un dažas pieturzīmes, taču pirmajai rakstzīmei ir jābūt burtam.
- Nosaukumā nevar izmantot atstarpes vai punktus.
- VBA neatšķir lielos un mazos burtus.
- Procedūras nosaukumā nevar izmantot nevienu no šīm rakstzīmēm: #, $, %, &, @, ^, * vai !. Citiem vārdiem sakot, jūsu procedūras nosaukums nevar izskatīties kā komiksu lāsta vārdi.
- Ja formulā ierakstāt funkciju procedūru, neizmantojiet nosaukumu, kas izskatās pēc šūnas adreses (piemēram, A1 vai B52). Patiesībā programma Excel pieļauj šādus funkciju nosaukumus, bet kāpēc padarīt lietas mulsinošākas, nekā tās jau ir?
- Procedūru nosaukumi nedrīkst būt garāki par 255 rakstzīmēm. (Protams, jūs nekad nenosauktu procedūru tik ilgi.)
Ideālā gadījumā procedūras nosaukums apraksta rutīnas mērķi. Laba prakse ir nosaukumu izveidot, apvienojot darbības vārdu un lietvārdu, piemēram, ProcessData, PrintReport, Sort_Array vai CheckFilename.
Daži programmētāji dod priekšroku teikumam līdzīgu nosaukumu izmantošanai, kas sniedz pilnīgu procedūras aprakstu. Daži piemēri ir WriteReportToTextFile un Get_Print_Options_and_Print_Report. Šādu garu nosaukumu izmantošanai ir plusi un mīnusi. No vienas puses, šādi nosaukumi ir aprakstoši un parasti nepārprotami. No otras puses, to rakstīšana prasa ilgāku laiku. Ikviens izstrādā nosaukumu piešķiršanas stilu, taču, ja jūsu makro nav tikai ātrs un netīrs pagaidu makro, ieteicams būt aprakstošam un izvairīties no bezjēdzīgiem nosaukumiem, piemēram, DoIt, Update, Fix un arvien populārais Macro1.
Excel VBA Sub procedūru izpilde
Lai gan pašlaik jūs, iespējams, nezināt daudz par apakšprocedūru izstrādi, ir svarīgi zināt, kā šīs procedūras izpildīt. Apakšprocedūra ir bezvērtīga, ja vien nezināt, kā to izpildīt.
Starp citu, apakšprocedūras izpilde nozīmē to pašu, ko palaist vai izsaukt apakšprocedūru. Varat izmantot jebkuru terminoloģiju, kas jums patīk.
Jūs varat izpildīt VBA Sub daudzos veidos; tas ir viens no iemesliem, kāpēc ar apakšprocedūrām varat paveikt tik daudz noderīgu lietu. Šeit ir izsmeļošs apakšprocedūras izpildes veidu saraksts:
- Izvēlieties Run → Run Sub/UserForm (VBE). Programma Excel izpilda apakšprocedūru, kurā atrodas kursors. Šai izvēlnes komandai ir divas alternatīvas: taustiņš F5 un poga Run Sub/UserForm VBE standarta rīkjoslā. Šīs metodes nedarbojas, ja procedūrai ir nepieciešams viens vai vairāki argumenti.
- Izmantojiet Excel dialoglodziņu makro. Šo lodziņu var atvērt, izvēloties Izstrādātājs → Kods → Makro vai izvēloties Skats → Makro → Makro. Vai arī apiet lenti un vienkārši nospiediet Alt+F8. Kad tiek parādīts dialoglodziņš Makro, atlasiet vajadzīgo apakšprocedūru un noklikšķiniet uz Palaist. Šajā dialoglodziņā ir norādītas tikai tās procedūras, kurām nav nepieciešams arguments.
- Nospiediet Ctrl+taustiņu (vai Ctrl+Shift+taustiņu), kas piešķirts apakšprocedūrai (pieņemot, ka tādu esat piešķīris).
- Darblapā noklikšķiniet uz pogas vai formas. Pogai vai formai ir jābūt piešķirtai apakšprocedūrai, kas ir ļoti viegli izdarāma.
- No citas jūsu rakstītās apakšprocedūras.
- Noklikšķiniet uz pogas, ko esat pievienojis ātrās piekļuves rīkjoslai.
- No pielāgota vienuma, ko esat pievienojis lentei.
- Kad notiek notikums. Šie pasākumi ietver darbgrāmatas atvēršanu, darbgrāmatas aizvēršanu, darbgrāmatas saglabāšanu, izmaiņu veikšanu šūnā, lapas aktivizēšanu un citas lietas.
- No tūlītējā loga VBE. Vienkārši ierakstiet apakšprocedūras nosaukumu un nospiediet taustiņu Enter.
Dažas no šīm metodēm ir aplūkotas tālāk. Lai turpinātu, VBA modulī ir jāievada apakšprocedūra:
Sāciet ar jaunu darbgrāmatu.
Nospiediet Alt+F11, lai aktivizētu VBE.
Logā Projekts atlasiet darbgrāmatu.
Izvēlieties Ievietot → Modulis, lai ievietotu jaunu moduli.
Ievadiet modulī sekojošo:
Sub ShowCubeRoot()
Skaitlis = InputBox ("Ievadiet pozitīvu skaitli")
MsgBox Num ^ (1/3) & " ir kuba sakne."
Beigt apakš
Šī procedūra pieprasa lietotājam numuru un pēc tam ziņojuma lodziņā parāda šī skaitļa kuba sakni. Šie attēli parāda, kas notiek, veicot šo procedūru.
Izmantojot iebūvēto VBA InputBox funkciju, lai iegūtu numuru.
Šeit jūs arī varat uzzināt, kas notiek, izmantojot MsgBox funkciju.
Skaitļa kuba saknes parādīšana, izmantojot funkciju MsgBox.
Starp citu, ShowCubeRoot nav laba makro piemērs . Tas nepārbauda kļūdas, tāpēc tas viegli neizdodas. Mēģiniet ievades lodziņā noklikšķināt uz pogas Atcelt vai ievadīt negatīvu skaitli. Jebkuras darbības rezultātā tiek parādīts kļūdas ziņojums.
Excel VBA Sub procedūras tieša izpilde
Viens veids, kā izpildīt šo procedūru, ir to darīt tieši no VBA moduļa, kurā jūs to definējāt. Veiciet tālāk norādītās darbības.
Aktivizējiet VBE un atlasiet VBA moduli, kurā ir šī procedūra.
Pārvietojiet kursoru jebkurā procedūras kodā.
Nospiediet F5 (vai izvēlieties Run → Run Sub/UserForm).
Atbildiet uz ievades lodziņu un noklikšķiniet uz Labi.
Procedūra parāda ievadītā skaitļa kuba sakni.
Jūs nevarat izmantot Run → Run Sub/UserForm, lai izpildītu apakšprocedūru, kas izmanto argumentus, jo jūs nevarat nodot argumentus procedūrai. Ja procedūrā ir viens vai vairāki argumenti, vienīgais veids, kā to izpildīt, ir izsaukt to no citas procedūras, kurai ir jāiesniedz arguments(-i).
Procedūras izpilde programmā Excel makro dialoglodziņā
Lielāko daļu laika jūs izpildāt apakšprocedūras no Excel, nevis no VBE. Tālāk ir aprakstīts, kā izpildīt makro, izmantojot Excel dialoglodziņu makro:
Ja strādājat VBE, aktivizējiet Excel.
Nospiežot Alt+F11, tiek atvērts ātrgaitas maršruts.
Izvēlieties Izstrādātājs → Kods → Makro (vai nospiediet Alt+F8).
Excel parāda šeit parādīto dialoglodziņu.
Dialoglodziņā Makro ir norādītas visas pieejamās apakšprocedūras.
Izvēlieties makro.
Noklikšķiniet uz Palaist (vai veiciet dubultklikšķi uz makro nosaukuma sarakstlodziņā).
Dialoglodziņā Makro netiek rādītas apakšprocedūras, kurās tiek izmantoti argumenti. Tas ir tāpēc, ka jūs nevarat norādīt argumentus.
Excel VBA makro izpilde, izmantojot īsinājumtaustiņu
Vēl viens veids, kā izpildīt makro, ir nospiest tā īsinājumtaustiņu. Bet pirms šīs metodes izmantošanas makro ir jāpiešķir īsinājumtaustiņš.
Kad sākat makro ierakstīšanu, dialoglodziņā Makro ierakstīšana ir iespēja piešķirt īsinājumtaustiņu . Ja veidojat procedūru, neizmantojot makro ierakstītāju, varat piešķirt īsinājumtaustiņu (vai mainīt esošu īsinājumtaustiņu), veicot šādas darbības:
Izvēlieties Izstrādātājs → Kods → Makro.
Saraksta lodziņā atlasiet apakšprocedūras nosaukumu.
Šajā piemērā procedūras nosaukums ir ShowCubeRoot.
Noklikšķiniet uz pogas Opcijas.
Programmā Excel tiek parādīts šeit parādītais dialoglodziņš Makro opcijas.
Dialoglodziņā Makro opcijas varat iestatīt makro opcijas.
Noklikšķiniet uz opcijas Īsinājumtaustiņš un ievadiet burtu lodziņā ar nosaukumu Ctrl.
Ievadītais burts atbilst taustiņu kombinācijai, kuru vēlaties izmantot makro izpildei. Piemēram, ja ievadāt mazo burtu c, makro var izpildīt, nospiežot Ctrl+C. Ja ievadāt lielo burtu, taustiņu kombinācijai jāpievieno taustiņš Shift. Piemēram, ja ievadāt C, varat izpildīt makro, nospiežot Ctrl+Shift+C.
Noklikšķiniet uz Labi, lai aizvērtu dialoglodziņu Makro opcijas, un pēc tam noklikšķiniet uz Atcelt, lai aizvērtu dialoglodziņu Makro.
Kad esat piešķīris īsinājumtaustiņu, varat nospiest šo taustiņu kombināciju, lai izpildītu makro. Īsinājumtaustiņš nedarbojas, ja tas ir piešķirts makro, kas izmanto argumentu.
Makro piešķirtie īsinājumtaustiņi ignorē programmā Excel iebūvētos īsinājumtaustiņus. Piemēram, Ctrl+C ir standarta īsinājumtaustiņš datu kopēšanai. Ja piešķirat makro Ctrl+C, kopēšanai nevar izmantot Ctrl+C. Tas parasti nav liels darījums, jo Excel gandrīz vienmēr nodrošina citus veidus, kā izpildīt komandas.
Excel VBA procedūras izpilde no pogas vai formas
Dažreiz jums varētu patikt ideja piešķirt makro pogai (vai jebkurai citai formai) darblapā. Lai pogai piešķirtu Excel makro, veiciet šīs darbības:
Aktivizējiet darblapu.
Pievienojiet pogu no grupas Veidlapas vadīklas.
Lai parādītu grupu Veidlapas vadīklas, izvēlieties Izstrādātājs → Vadīklas → Ievietot.
Lente, kurā redzamas vadīklas, kas ir pieejamas, noklikšķinot uz Ievietot cilnē Izstrādātājs.
Grupā Veidlapas vadīklas noklikšķiniet uz rīka Poga.
Tā ir pirmā poga pirmajā vadīklu rindā.
Velciet darblapā, lai izveidotu pogu.
Pēc pogas pievienošanas darblapai programma Excel nolasa jūsu domas un parāda tālāk redzamo dialoglodziņu Piešķirt makro.
Kad darblapai pievienojat pogu, programma Excel automātiski parāda dialoglodziņu Makro piešķiršana.
Atlasiet makro, kuru vēlaties piešķirt pogai.
Noklikšķiniet uz Labi.
Pēc uzdevuma veikšanas, noklikšķinot uz pogas, tiek izpildīts makro — gluži kā ar maģiju.
Kad pievienojat pogu, ņemiet vērā, ka nolaižamajā lodziņā ir redzamas divas vadīklu kopas: veidlapas vadīklas un ActiveX vadīklas. Šīs divas vadības ierīču grupas izskatās līdzīgas, taču patiesībā tās ir ļoti atšķirīgas. Praksē veidlapas vadīklas ir vieglāk lietojamas.
Varat arī piešķirt makro jebkurai citai formai vai objektam. Piemēram, pieņemsim, ka vēlaties izpildīt makro, kad lietotājs noklikšķina uz taisnstūra objekta. Veiciet tālāk norādītās darbības.
Pievienojiet darblapai taisnstūri.
Ievietojiet taisnstūri, izvēloties Ievietot → Ilustrācijas → Formas.
Ar peles labo pogu noklikšķiniet uz taisnstūra.
Saīsnes izvēlnē izvēlieties Piešķirt makro.
Dialoglodziņā Makro piešķiršana atlasiet makro.
Noklikšķiniet uz Labi.
Pēc šo darbību veikšanas, noklikšķinot uz taisnstūra, tiek izpildīts piešķirtais makro.
Procedūras izpilde no citas Excel VBA procedūras
Varat arī izpildīt Excel VBA procedūru no citas procedūras. Ja vēlaties to izmēģināt, veiciet šīs darbības:
Aktivizējiet VBA moduli, kurā ir ShowCubeRoot rutīna.
Ievadiet šo jauno procedūru (virs vai zem ShowCubeRoot koda — tam nav nekādas atšķirības):
Sub NewSub()
Zvaniet ShowCubeRoot
Beigt apakš
Kad tas ir pabeigts, vienkārši izpildiet NewSub makro.
Vienkāršākais veids, kā to izdarīt, ir pārvietot kursoru uz jebkuru vietu NewSub kodā un nospiest F5. Ņemiet vērā, ka šī NewSub procedūra vienkārši izpilda ShowCubeRoot procedūru.
Starp citu, atslēgvārds Call nav obligāts. Paziņojumā var būt tikai apakšprocedūras nosaukums. Tomēr, izmantojot atslēgvārdu Call, ir pilnīgi skaidrs, ka tiek izsaukta procedūra.
Excel VBA funkciju procedūru izpilde
Funkcijas, atšķirībā no apakšprocedūrām, var izpildīt tikai divos veidos:
- Izsaucot funkciju no citas apakšprocedūras vai funkcijas procedūras
- Izmantojot funkciju darblapas formulā
Izmēģiniet šo vienkāršo funkciju. Ievadiet to VBA modulī:
Funkcija CubeRoot(skaitlis)
CubeRoot = skaitlis ^ (1/3)
Beigu funkcija
Šī funkcija ir diezgan viegla; tas tikai aprēķina skaitļa kuba sakni, kas tai nodota kā arguments. Tomēr tas nodrošina sākumpunktu funkciju izpratnei. Tas arī ilustrē svarīgu koncepciju par funkcijām: kā atgriezt vērtību. (Jūs atceraties, ka funkcija atgriež vērtību, vai ne?)
Ņemiet vērā, ka viena koda rindiņa, kas veido šo funkcijas procedūru, veic aprēķinu. Matemātikas rezultāts (skaitlis pakāpē 1⁄3) tiek piešķirts mainīgajam CubeRoot. Nav nejaušība, ka CubeRoot ir arī funkcijas nosaukums. Lai norādītu funkcijai, kāda vērtība jāatgriež, šī vērtība tiek piešķirta funkcijas nosaukumam.
Excel VBA funkcijas izsaukšana no apakšprocedūras
Tā kā funkciju nevar izpildīt tieši, tā ir jāizsauc no citas procedūras. Ievadiet šo vienkāršo procedūru tajā pašā VBA modulī , kurā ir CubeRoot funkcija:
Sub CallerSub()
Ans = CubeRoot (125)
MsgBox Ans
Beigt apakš
Izpildot procedūru CallerSub, programmā Excel tiek parādīts ziņojuma lodziņš, kurā ir Ans mainīgā vērtība, kas ir 5.
Notiek šādi: tiek izpildīta funkcija CubeRoot, un tā saņem argumentu 125. Aprēķinu veic, izmantojot funkcijas kodu (izmantojot kā argumentu nodoto vērtību), un funkcijas atgrieztā vērtība tiek piešķirta mainīgajam Ans. Pēc tam funkcija MsgBox parāda mainīgā Ans vērtību.
Mēģiniet mainīt argumentu, kas tiek nodots funkcijai CubeRoot, un vēlreiz palaidiet CallerSub makro. Tas darbojas tāpat kā vajadzētu — pieņemot, ka funkcijai piešķirat derīgu argumentu (pozitīvu skaitli).
Starp citu, CallerSub procedūru varētu nedaudz vienkāršot. Mainīgais Ans nav īsti nepieciešams, ja vien jūsu kods šo mainīgo neizmantos vēlāk. Varat izmantot šo vienu paziņojumu, lai iegūtu tādu pašu rezultātu:
MsgBox CubeRoot (125)
Excel VBA funkcijas izsaukšana no darblapas formulas
Tagad ir pienācis laiks izsaukt šo VBA funkcijas procedūru no darblapas formulas. Aktivizējiet darblapu tajā pašā darbgrāmatā, kurā ir CubeRoot funkcijas definīcija. Pēc tam jebkurā šūnā ievadiet šādu formulu:
=CubeRoot(1728)
Šūnā tiek parādīts 12, kas patiešām ir 1728 kuba sakne.
Kā jūs varētu gaidīt, kā CubeRoot funkcijas argumentu varat izmantot šūnas atsauci. Piemēram, ja šūna A1 satur vērtību, varat ievadīt =CubeRoot(A1) . Šajā gadījumā funkcija atgriež skaitli, kas iegūts, aprēķinot A1 vērtības kuba sakni.
Šo funkciju var izmantot neierobežotu skaitu reižu darblapā. Tāpat kā programmā Excel iebūvētās funkcijas, jūsu pielāgotās funkcijas tiek parādītas dialoglodziņā Funkcijas ievietošana. Noklikšķiniet uz rīkjoslas pogas Ievietot funkciju un izvēlieties kategoriju Lietotāja definēta. Kā parādīts zemāk, dialoglodziņā Funkcijas ievietošana ir norādīta jūsu pašu funkcija.
Funkcija CubeRoot parādās dialoglodziņa Funkcijas ievietošanas kategorijā User Defined.
Ja vēlaties, lai dialoglodziņš Funkcijas ievietošana parādītu funkcijas aprakstu, rīkojieties šādi:
Izvēlieties Izstrādātājs → Kods → Makro.
Programmā Excel tiek parādīts dialoglodziņš Makro, bet CubeRoot sarakstā neparādās. (CubeRoot ir funkciju procedūra, un šajā sarakstā ir redzamas tikai apakšprocedūras.) Neuztraucieties.
Lodziņā Makro nosaukums ierakstiet vārdu CubeRoot.
Noklikšķiniet uz pogas Opcijas.
Lodziņā Apraksts ievadiet funkcijas aprakstu.
Noklikšķiniet uz Labi, lai aizvērtu dialoglodziņu Makro opcijas.
Aizveriet dialoglodziņu Makro, noklikšķinot uz pogas Atcelt.
Šis aprakstošais teksts tagad parādās dialoglodziņā Funkcijas ievietošana.
Šajā attēlā parādīta funkcija CubeRoot, kas tiek izmantota darblapu formulās.
Funkcijas CubeRoot izmantošana formulās.
Iespējams, ka tagad lietas sāk sakārtoties.