Ashtu si njerëzit, kafshët shtëpiake dhe uraganet, çdo procedurë nën dhe funksioni i Excel VBA duhet të ketë një emër. Edhe pse është krejtësisht e pranueshme t'i emërtoni qenit tuaj Hairball Harris, zakonisht nuk është ide e mirë të përdorni një qëndrim të tillë të lirë kur emërtoni procedurat Excl VBA. Kur emërtoni procedurat e Excel VBA, duhet të ndiqni disa rregulla:
- Mund të përdorni shkronja, numra dhe disa karaktere pikësimi, por karakteri i parë duhet të jetë një shkronjë.
- Nuk mund të përdorni asnjë hapësirë ose pikë në emër.
- VBA nuk bën dallimin midis shkronjave të mëdha dhe të vogla.
- Nuk mund të përdorni asnjë nga karakteret e mëposhtme në emrin e një procedure: #, $, %, &, @, ^, * ose !. Me fjalë të tjera, emri i procedurës suaj nuk mund të duket si fjalë mallkimi me strip.
- Nëse shkruani një procedurë funksioni për përdorim në një formulë, shmangni përdorimin e një emri që duket si një adresë qelize (për shembull, A1 ose B52). Në fakt, Excel lejon emra të tillë funksionesh, por pse t'i bëjmë gjërat më konfuze se sa janë tashmë?
- Emrat e procedurave nuk mund të jenë më të gjatë se 255 karaktere. (Sigurisht, nuk do ta bënit kurrë një emër kaq të gjatë një procedure.)
Në mënyrë ideale, emri i një procedure përshkruan qëllimin e rutinës. Një praktikë e mirë është krijimi i një emri duke kombinuar një folje dhe një emër - për shembull, ProcessData, PrintReport, Sort_Array ose CheckFilename.
Disa programues preferojnë të përdorin emra si fjali që ofrojnë një përshkrim të plotë të procedurës. Disa shembuj përfshijnë WriteReportToTextFile dhe Get_Print_Options_and_Print_Report. Përdorimi i emrave të tillë të gjatë ka të mirat dhe të këqijat. Nga njëra anë, emra të tillë janë përshkrues dhe zakonisht të paqartë. Nga ana tjetër, atyre u duhet më shumë kohë për të shtypur. Të gjithë zhvillojnë një stil emërtimi, por nëse makroja juaj nuk është thjesht një makro e përkohshme e shpejtë dhe e ndotur, është mirë të jeni përshkruese dhe të shmangni emrat e pakuptimtë si DoIt, Update, Fix dhe Macro1 gjithnjë e njohur.
Ekzekutimi i procedurave Excel VBA Sub
Edhe pse mund të mos dini shumë për zhvillimin e procedurave nën në këtë pikë, është e rëndësishme të dini se si t'i ekzekutoni këto procedura. Një procedurë nën është e pavlefshme nëse nuk dini si ta ekzekutoni atë.
Meqë ra fjala, ekzekutimi i një procedure Sub nënkupton të njëjtën gjë si ekzekutimi ose thirrja e një procedure Sub. Ju mund të përdorni çfarëdo terminologjie që dëshironi.
Ju mund të ekzekutoni një VBA Sub në shumë mënyra; kjo është një arsye që ju mund të bëni kaq shumë gjëra të dobishme me procedurat Nën. Këtu është një listë shteruese e mënyrave për të ekzekutuar një procedurë nën:
- Zgjidhni Run → Run Sub/UserForm (në VBE). Excel ekzekuton procedurën Sub në të cilën ndodhet kursori. Kjo komandë menyje ka dy alternativa: tastin F5 dhe butonin Run Sub/UserForm në shiritin e veglave Standard në VBE. Këto metoda nuk funksionojnë nëse procedura kërkon një ose më shumë argumente.
- Përdorni kutinë e dialogut Macro të Excel. Ju e hapni këtë kuti duke zgjedhur Zhvillues → Kodi → Makro ose duke zgjedhur Shiko → Makrot → Makrot. Ose anashkaloni Shiritin dhe thjesht shtypni Alt+F8. Kur të shfaqet kutia e dialogut Macro, zgjidhni procedurën Nën që dëshironi dhe klikoni Run. Kjo kuti dialogu liston vetëm procedurat që nuk kërkojnë argument.
- Shtypni Ctrl+tastin (ose Ctrl+Shift+key) të caktuar për procedurën Nën (duke supozuar se keni caktuar një të tillë).
- Klikoni një buton ose një formë në një fletë pune. Butoni ose forma duhet t'i caktohet një procedurë Nën - e cila është shumë e lehtë për t'u bërë.
- Nga një procedurë tjetër Nën që shkruani.
- Klikoni një buton që keni shtuar në shiritin e veglave të Qasjes së Shpejtë.
- Nga një artikull i personalizuar që keni shtuar në Shirit.
- Kur ndodh një ngjarje. Këto ngjarje përfshijnë hapjen e librit të punës, mbylljen e librit të punës, ruajtjen e librit të punës, kryerjen e një ndryshimi në një qelizë, aktivizimin e një flete dhe gjëra të tjera.
- Nga dritarja e menjëhershme në VBE. Thjesht shkruani emrin e procedurës Nën dhe shtypni Enter.
Disa nga këto teknika janë trajtuar më poshtë. Për ta ndjekur, duhet të futni një procedurë Nën në një modul VBA:
Filloni me një libër të ri pune.
Shtypni Alt+F11 për të aktivizuar VBE.
Zgjidhni librin e punës në dritaren e Projektit.
Zgjidhni Fut → Modul për të futur një modul të ri.
Futni sa vijon në modul:
Nën ShowCubeRoot()
Num = InputBox ("Fut një numër pozitiv")
MsgBox Num ^ (1/3) & "është rrënja e kubit."
Fundi Nën
Kjo procedurë kërkon nga përdoruesi një numër dhe më pas shfaq rrënjën kubike të atij numri në një kuti mesazhesh. Këto imazhe tregojnë se çfarë ndodh kur ekzekutoni këtë procedurë.
Përdorimi i funksionit të integruar VBA InputBox për të marrë një numër.
Ju gjithashtu çfarë ndodh përmes funksionit MsgBox këtu.
Shfaqja e rrënjës kubike të një numri nëpërmjet funksionit MsgBox.
Nga rruga, ShowCubeRoot nuk është një shembull i një makro të mirë . Nuk kontrollon për gabime, kështu që dështon lehtësisht. Provoni të klikoni butonin Anulo në kutinë e hyrjes ose të futni një numër negativ. Secili veprim rezulton në një mesazh gabimi.
Ekzekutimi i drejtpërdrejtë i procedurës Excel VBA Sub
Një mënyrë për të ekzekutuar këtë procedurë është duke e bërë këtë drejtpërdrejt nga moduli VBA në të cilin e keni përcaktuar. Ndiqni këto hapa:
Aktivizoni VBE dhe zgjidhni modulin VBA që përmban procedurën.
Lëvizni kursorin kudo në kodin e procedurës.
Shtypni F5 (ose zgjidhni Run → Run Sub/UserForm).
Përgjigjuni kutisë së hyrjes dhe klikoni OK.
Procedura shfaq rrënjën kubike të numrit që keni futur.
Ju nuk mund të përdorni Run → Run Sub/UserForm për të ekzekutuar një procedurë Sub që përdor argumente, sepse nuk keni asnjë mënyrë për t'i kaluar argumentet në procedurë. Nëse procedura përmban një ose më shumë argumente, mënyra e vetme për ta ekzekutuar është thirrja e saj nga një procedurë tjetër - e cila duhet të sigurojë argumentin(et).
Ekzekutimi i procedurës nga kutia e dialogut Macro e Excel-it
Shumicën e kohës, ju ekzekutoni nën procedura nga Excel, jo nga VBE. Hapat e mëposhtëm përshkruajnë se si të ekzekutoni një makro duke përdorur kutinë e dialogut Macro të Excel:
Nëse jeni duke punuar në VBE, aktivizoni Excel.
Shtypja e Alt+F11 është rruga e shpejtë.
Zgjidhni Zhvillues → Kodi → Makro (ose shtypni Alt+F8).
Excel shfaq kutinë e dialogut të paraqitur këtu.
Kutia e dialogut Macro liston të gjitha nënprocedurat e disponueshme.
Zgjidhni makro.
Klikoni Run (ose klikoni dy herë emrin e makrosë në kutinë e listës).
Kutia e dialogut Macro nuk shfaq nënprocedurat që përdorin argumente. Kjo sepse nuk ka asnjë mënyrë që ju të specifikoni argumentet.
Ekzekutimi i një makro Excel VBA duke përdorur një çelës shkurtore
Një mënyrë tjetër për të ekzekutuar një makro është të shtypni tastin e shkurtores së saj. Por, përpara se të përdorni këtë metodë, duhet të caktoni një çelës shkurtore në makro.
Ju keni mundësinë të caktoni një çelës shkurtore në kutinë e dialogut Regjistro makro kur filloni të regjistroni një makro . Nëse e krijoni procedurën pa përdorur regjistruesin makro, mund të caktoni një çelës shkurtore (ose të ndryshoni një çelës ekzistues shkurtore) duke përdorur hapat e mëposhtëm:
Zgjidhni Zhvillues → Kodi → Makro.
Zgjidhni emrin e procedurës Nën nga kutia e listës.
Në këtë shembull, procedura quhet ShowCubeRoot.
Klikoni butonin Options.
Excel shfaq kutinë e dialogut të opsioneve makro të paraqitur këtu.
Kutia e dialogut "Makro Options" ju lejon të vendosni opsione për makrot tuaja.
Klikoni opsionin Shortcut Key dhe futni një shkronjë në kutinë e etiketuar Ctrl.
Shkronja që futni korrespondon me kombinimin e tastit që dëshironi të përdorni për ekzekutimin e makros. Për shembull, nëse futni shkronjën e vogël c, mund të ekzekutoni makro duke shtypur Ctrl+C. Nëse futni një shkronjë të madhe, duhet të shtoni tastin Shift në kombinimin e tastit. Për shembull, nëse futni C, mund të ekzekutoni makro duke shtypur Ctrl+Shift+C.
Klikoni OK për të mbyllur kutinë e dialogut të Opsioneve të Macro dhe më pas klikoni Cancel për të mbyllur kutinë e dialogut Macro.
Pasi të keni caktuar një çelës shkurtore, mund të shtypni atë kombinim tasti për të ekzekutuar makro. Një çelës shkurtore nuk funksionon nëse i është caktuar një makro që përdor një argument.
Tastet e shkurtoreve që u caktoni makroteve i anulojnë tastet e shkurtoreve të integruara të Excel. Për shembull, Ctrl+C është çelësi standard i shkurtoreve për të kopjuar të dhënat. Nëse i caktoni Ctrl+C një makro, nuk mund të përdorni Ctrl+C për të kopjuar. Kjo zakonisht nuk është një punë e madhe sepse Excel pothuajse gjithmonë ofron mënyra të tjera për të ekzekutuar komanda.
Ekzekutimi i procedurës Excel VBA nga një buton ose formë
Ndonjëherë, mund t'ju pëlqejë ideja e caktimit të makros në një buton (ose ndonjë formë tjetër) në një fletë pune. Për të caktuar makro Excel në një buton, ndiqni këto hapa:
Aktivizoni një fletë pune.
Shto një buton nga grupi Form Controls.
Për të shfaqur grupin Form Controls, zgjidhni Zhvillues → Kontrolle → Fut.
Shiriti, që tregon kontrollet e disponueshme kur klikoni Fut në skedën Zhvilluesi.
Klikoni mjetin Button në grupin Form Controls.
Është butoni i parë në rreshtin e parë të kontrolleve.
Zvarriteni në fletën e punës për të krijuar butonin.
Pasi të shtoni butonin në fletën tuaj të punës, Excel lexon mendjen tuaj dhe shfaq kutinë e dialogut "Cakto makro" të paraqitur më poshtë.
Kur shtoni një buton në një fletë pune, Excel shfaq automatikisht kutinë e dialogut Assign Macro.
Zgjidhni makro që dëshironi t'i caktoni butonit.
Klikoni OK.
Pasi të keni bërë detyrën, klikimi i butonit ekzekuton makro - ashtu si magjia.
Kur shtoni një buton, vini re se kutia me zbritje tregon dy grupe kontrollesh: Form Controls dhe ActiveX Controls. Këto dy grupe kontrollesh duken të ngjashme, por në fakt ato janë shumë të ndryshme. Në praktikë, Form Controls janë më të lehta për t'u përdorur.
Ju gjithashtu mund të caktoni një makro për çdo formë ose objekt tjetër. Për shembull, supozoni se dëshironi të ekzekutoni një makro kur përdoruesi klikon një objekt Rectangle. Ndiqni këto hapa:
Shtoni drejtkëndëshin në fletën e punës.
Fusni një drejtkëndësh duke zgjedhur Fut → Ilustrime → Forma.
Klikoni me të djathtën në drejtkëndësh.
Zgjidhni Assign Macro nga menuja e shkurtoreve të tij.
Zgjidhni makro në kutinë e dialogut Cakto Macro.
Klikoni OK.
Pasi të keni kryer këto hapa, duke klikuar drejtkëndëshin ekzekutohet makroja e caktuar.
Ekzekutimi i procedurës nga një procedurë tjetër Excel VBA
Ju gjithashtu mund të ekzekutoni një procedurë Excel VBA nga një procedurë tjetër. Ndiqni këto hapa nëse dëshironi ta provoni këtë:
Aktivizoni modulin VBA që mban rutinën ShowCubeRoot.
Futni këtë procedurë të re (ose sipër ose poshtë kodit ShowCubeRoot - nuk ka asnjë ndryshim):
Sub NewSub()
Telefononi ShowCubeRoot
Fundi Nën
Pasi të keni përfunduar, thjesht ekzekutoni makro NewSub.
Mënyra më e lehtë për ta bërë këtë është të lëvizni kursorin kudo brenda kodit të NewSub dhe shtypni F5. Vini re se kjo procedurë NewSub thjesht ekzekuton procedurën ShowCubeRoot.
Nga rruga, fjala kyçe Thirrje është fakultative. Deklarata mund të përbëhet vetëm nga emri i nënprocedurës. Megjithatë, përdorimi i fjalës kyçe "Thirrje" e bën plotësisht të qartë se po thirret një procedurë.
Ekzekutimi i procedurave të funksionit Excel VBA
Funksionet, ndryshe nga nënprocedurat, mund të ekzekutohen vetëm në dy mënyra:
- Duke thirrur funksionin nga një procedurë tjetër e nënprocedurës ose funksionit
- Duke përdorur funksionin në një formulë të fletës së punës
Provoni këtë funksion të thjeshtë. Futeni atë në një modul VBA:
Funksioni CubeRoot (numri)
CubeRoot = numri ^ (1/3)
Funksioni i Fundit
Ky funksion është mjaft i mprehtë; ai thjesht llogarit rrënjën kubike të numrit që i është dhënë si argument. Megjithatë, ai ofron një pikënisje për të kuptuar funksionet. Ai gjithashtu ilustron një koncept të rëndësishëm për funksionet: si të ktheni vlerën. (Ju mbani mend që një funksion kthen një vlerë, apo jo?)
Vini re se rreshti i vetëm i kodit që përbën këtë procedurë të funksionit kryen një llogaritje. Rezultati i matematikës (numri në fuqinë 1⁄3) i caktohet ndryshores CubeRoot. Jo rastësisht, CubeRoot është gjithashtu emri i funksionit. Për t'i treguar funksionit se çfarë vlere duhet të kthejë, ju ia caktoni atë vlerë emrit të funksionit.
Thirrja e funksionit Excel VBA nga një procedurë nën
Për shkak se nuk mund të ekzekutoni një funksion drejtpërdrejt, duhet ta thërrisni atë nga një procedurë tjetër. Futni procedurën e mëposhtme të thjeshtë në të njëjtin modul VBA që përmban funksionin CubeRoot:
Nën CallerSub()
Ans = CubeRoot (125)
MsgBox Përgjigje
Fundi Nën
Kur ekzekutoni procedurën CallerSub, Excel shfaq një kuti mesazhi që përmban vlerën e ndryshores Ans, e cila është 5.
Ja se çfarë po ndodh: Funksioni CubeRoot ekzekutohet dhe merr një argument prej 125. Llogaritja kryhet nga kodi i funksionit (duke përdorur vlerën e kaluar si argument) dhe vlera e kthyer e funksionit i caktohet ndryshores Ans. Funksioni MsgBox më pas shfaq vlerën e ndryshores Ans.
Provoni të ndryshoni argumentin që i është kaluar funksionit CubeRoot dhe ekzekutoni sërish makronë CallerSub. Ajo funksionon ashtu siç duhet - duke supozuar se i jepni funksionit një argument të vlefshëm (një numër pozitiv).
Nga rruga, procedura CallerSub mund të thjeshtohet pak. Ndryshorja Ans nuk kërkohet vërtet nëse kodi juaj do ta përdorë atë variabël më vonë. Ju mund të përdorni këtë deklaratë të vetme për të marrë të njëjtin rezultat:
MsgBox CubeRoot (125)
Thirrja e një funksioni Excel VBA nga një formulë e fletës së punës
Tani është koha për të thirrur këtë procedurë të funksionit VBA nga një formulë e fletës së punës. Aktivizoni një fletë pune në të njëjtin libër pune që mban përkufizimin e funksionit CubeRoot. Pastaj vendosni formulën e mëposhtme në çdo qelizë:
=CubeRoot(1728)
Qeliza shfaq 12, që është me të vërtetë rrënja e kubit e 1728.
Siç mund ta prisni, mund të përdorni një referencë qelize si argument për funksionin CubeRoot. Për shembull, nëse qeliza A1 përmban një vlerë, mund të futni =CubeRoot(A1) . Në këtë rast, funksioni kthen numrin e marrë duke llogaritur rrënjën kubike të vlerës në A1.
Ju mund ta përdorni këtë funksion çdo herë në fletën e punës. Ashtu si funksionet e integruara të Excel-it, funksionet tuaja të personalizuara shfaqen në kutinë e dialogut Insert Function. Klikoni butonin Insert Function toolbar dhe zgjidhni kategorinë User Defined. Siç tregohet më poshtë, kutia e dialogut Insert Function liston funksionin tuaj.
Funksioni CubeRoot shfaqet në kategorinë User Defined të kutisë së dialogut Insert Function.
Nëse dëshironi që kutia e dialogut Insert Function të shfaqë një përshkrim të funksionit, ndiqni këto hapa:
Zgjidhni Zhvillues → Kodi → Makro.
Excel shfaq kutinë e dialogut Macro, por CubeRoot nuk shfaqet në listë. (CubeRoot është një procedurë Funksioni, dhe kjo listë tregon vetëm procedurat nën.) Mos u shqetësoni.
Shkruani fjalën CubeRoot në kutinë Macro Name.
Klikoni butonin Options.
Vendosni një përshkrim të funksionit në kutinë e Përshkrimi.
Klikoni OK për të mbyllur kutinë e dialogut të opsioneve makro.
Mbyllni kutinë e dialogut Macro duke klikuar butonin Cancel.
Ky tekst përshkrues tani shfaqet në kutinë e dialogut Insert Function.
Ky imazh tregon funksionin CubeRoot që përdoret në formulat e fletëve të punës.
Përdorimi i funksionit CubeRoot në formula.
Deri tani, gjërat mund të kenë filluar të bashkohen për ju.