- Siit saate teada, kuidas ja millal igat tüüpi muutujaid Excelis ja VBA-s kasutada makrode ja valemite optimeerimiseks.
- Eristage erinevaid ulatusi ja kestusi, et vältida vigu ning maksimeerida mälu ja jõudlust.
- Avastage parimad tavad ja uued funktsioonid, näiteks LET-funktsioon ja muutujate kasutamine professionaalsetes pluginates.
Lihtsamalt öeldes on muutuja nimega mälupesa, mida kasutatakse teabe ajutiseks salvestamiseks VBA makro või protseduuri töötamise ajal. Mõelge muutujatest kui väikestest kastidest, mida saate sildistada ja täita mis tahes vajalike andmetega: numbrid, tekst, kuupäevad, arvutustulemused jne. Kui olete väärtuse muutujasse salvestanud, saate sellele juurde pääseda, seda muuta ja kasutada nii mitu korda kui soovite sama makro sees või isegi projekti teistes osades, olenevalt sellest, kuidas te selle deklareerisite.
Muutujate kasutamisel Excelis on selged eelised : need hõlbustavad teabe taaskasutamist (te ei pea samu andmeid mitu korda küsima), parandavad makrode jõudlust (vältides tarbetuid arvutusi või otsinguid) ning muudavad teie koodi selgemaks, korrastatumaks ja hõlpsamini hooldatavaks.
Peamised muutujate tüübid Excel VBA-s
Üks olulisi aspekte muutujatega töötamisel Excelis VBA abil on sobiva muutujatüübi valimine andmete jaoks, mida soovite salvestada. Seda nimetatakse muutujate tippimiseks ja see on olulisem, kui esmapilgul paistab: õige tippimine aitab muuta teie koodi tõhusamaks ja väldib vigu , näiteks matemaatiliste tehteid nimede või kuupäevadega.
VBA-s on kõige levinumad muutujate tüübid järgmised:
- TäisarvTäisarvude puhul vahemikus -32.768 32.767 kuni XNUMX XNUMX. Ideaalne elementide loendamiseks või väärtuste, näiteks vanuse, salvestamiseks.
- PikkSuuremate täisarvude puhul sobib ideaalselt suurte kogusummade või pikkade identifikaatorite jaoks.
- KahekordistadaKümnendarvude puhul, kasulik arvutustes, mis nõuavad täpsus, keskmiste ja protsentidena.
- ÜhepikkusedKümnendarvude puhul, mille väärtus on väiksem täpsus kui kahekordne, aga paljudel juhtudel piisav.
- nöörTekstistringide, näiteks nimede, aadresside jms salvestamiseks.
- kuupäevKuupäevade ja kellaaegade jaoks.
- BooleanVäärtuste puhul tõene või vale, väga kasulik valideerimisel.
- BaitVäikeste täisarvude puhul vahemikus 0 kuni 255.
- variantMetamärkide tüüp võimaldab teil salvestada cualquier andmetüüp. On paindlik, aga see tarbib rohkem mälu.
Tüüpe on rohkem, sealhulgas mõned spetsiaalsed (näiteks valuuta raha jaoks), kuid ülaltoodud on enamikus makrodes ja isiklikes funktsioonides kõige sagedamini kasutatavad.
Kuidas Excelis muutujat deklareerida ja parimad tavad

Muutuja deklareerimine hõlmab selle loomist ja salvestatavate andmete tüübi määratlemist. Seda tehakse lause `Dim` abil , mis tähistab "mõõdet". Põhisüntaks on:
Dim nombreDeVariable As TipoDeDato
Näiteks inimese vanuse salvestamiseks muutuja loomiseks kirjutaksite:
Dim Edad As Integer
Ühel real saab deklareerida mitu sama tüüpi muutujat:
Dim x As Integer, y As Integer
Väga oluline: kui Dim-lauses on mitu komadega eraldatud nime, kasutab seda ainult andmetüüpi määrav muutuja . Näiteks selles reas:
Dim x, y As Integer
Muutuja y on tüüpi Integer, aga x on tüüpi Variant . Seetõttu on alati soovitatav iga muutuja andmetüüp määrata.
Soovitatav on iga mooduli alguses kasutada lauset `Option Explicit` . See aitab vältida valesti kirjutatud nimede või initsialiseerimata muutujate põhjustatud vigu . Kui jätate lause `Option Explicit` välja, võib VBA lennult luua `Variant` tüüpi muutujaid, mis võib koodi hooldust keerulisemaks muuta.
Muutujate ulatus: kui ulatuslikult neid saab kasutada
Muutuja ulatus määrab, kust sellele ligi pääseb. See sõltub sellest, kus ja kuidas te selle deklareerite :
- Protseduuri ulatuse muutujadKui deklareerite muutuja sees alla o funktsioon, on kättesaadav ainult selle menetluse raames. Teised makrod ei saa seda näha ega muuta.
- Mooduli ulatusega (privaatsed) muutujadKui deklareerite muutuja väljaspool mis tahes protseduuri, kuid mooduli sees, kasutades Dim o Era-, on ligipääsetav selle mooduli mis tahes protseduuriga, kuid mitte teistest moodulitest.
- Avalikud (globaalsed) ulatusmuutujad: Kui kasutate avalik Selle deklareerimiseks väljaspool protseduure on see muutuja mooduli alguses saadaval järgmistele isikutele: kõik projekti makrod ja moodulid. Need on muutujad globaalne.
Avaliku avalduse näide:
Public contador As Integer
Globaalsete muutujate liigne kasutamine võib hooldust keeruliseks muuta . Soovitatav on piirata nende kasutamist võimalikult väikese ulatusega , kus neid tõeliselt vaja on.
Muutuv kestus ja kuidas seda initsialiseerida
Teine oluline kaalutlus on muutuja kestus ehk kui kaua see oma väärtust säilitab . See sõltub selle ulatusest ja deklareerimisest:
- Muutujate lokaadidNeed luuakse protseduuri alguses ja hävitatakse lõpus, kaotades oma teabe.
- Moodul ja globaalsed muutujadNeed eksisteerivad seni, kuni projekt on avatud, ja säilitavad oma väärtuse protseduuride vahel.
- Staatilised muutujad (deklareeritud koos Staatiline): Nad säilitavad oma viimase väärtuse protseduuri kutsumiste vahel, ainult selle protseduuri piires. Need on väga kasulikud funktsioonides, mis peavad iga kutsumise ajal midagi meeles pidama.
Staatilise muutuja näide:
Static acumulado As Integer
Muutuja loomisel initsialiseerib VBA selle automaatselt vaikeväärtusega: numbrid nullina, stringid tühjana ("") ja Variant muutujad tühjana.
Näide muutujate kasutamisest Exceli makros
Kõige eelneva illustreerimiseks toon tüüpilise praktilise näite: kahe õpilase keskmise vanuse arvutamine arvutustabeli andmete põhjal.
- Määrake teabe tüüp: Sel juhul on vanuse jaoks kaks muutujat ja keskmine. Vanused on täisarvud ja keskmine kahekordsed, kuna need võivad sisaldada kümnendmurde.
- Salvestage muutujate väärtused: lahtrite omistamiste abil, näiteks Vahemik(«C5»).Value.
- Teostab muutujatega tehte ja kuvab tulemuse: arvutust esitava MsgBoxi kaudu.
Kood oleks selline:
Dim Edad1 As Integer
Dim Edad2 As Integer
Dim Promedio As Double
Edad1 = Range("C5").Value
Edad2 = Range("C6").Value
Promedio = (Edad1 + Edad2) / 2
MsgBox "El promedio de las edades es: " & Promedio
Muutujate kasutamine selles näites parandab koodi selgust ja tõhusust .
Objektimuutujad VBA-s ja rakendusteülene automatiseerimine
VBA võimaldab teil deklareerida muutujaid ka objektiviidete salvestamiseks , mis on oluline, kui soovite manipuleerida vahemike, töölehtede, töövihikute või objektidega teistest rakendustest (nt Word või Access). Seda tehakse märksõna `Set` abil.
Dim hoja As Worksheet
Set hoja = ThisWorkbook.Sheets("Datos")
Kui teil on vaja Accessi Excelist automatiseerida, saate deklareerida konkreetsete või üldiste objektide muutujaid, kui lisate vastava teegi viite. Lisaks saate teada, kuidas Notepadis süntaksit esile tõsta , et parandada oma VBA-koodi loetavust.
Dim appAccess As Object
Set appAccess = CreateObject("Access.Application")
See meetod on väga võimas automatiseeringute ja protsesside teostamiseks erinevate Office'i rakenduste vahel.
Variant- ja muud tüüpi muutujate erinevused
Variant tüüp saab salvestada mis tahes tüüpi andmeid: numbreid, teksti, kuupäevi jne. Selle eeliseks on paindlikkus , kuid puuduseks on see, et see tarbib rohkem mälu ja võib tekitada raskesti tuvastatavaid vigu. Seetõttu on enamasti parem kasutada võimaluse korral kindlaid tüüpe.
Kui deklareerite muutuja ilma selle tüüpi ( Dim x ) määramata, loob VBA selle automaatselt variandina. See võib olla kasulik üldistes makrodes , kuid üldiselt on alati soovitatav andmetüüp defineerida.
Muutujad aruandemallides ja lisandmoodulites (Qlik Sense ja teised)
Professionaalsetes keskkondades ja ühendatud tööriistades (näiteks Qlik Sense Exceli aruannetes) omandab muutujate ja avaldiste kasutamine teise mõõtme. Muutujaid saab salvestada korduvkasutatavate objektidena, mis võimaldab dünaamilisi arvutusi ja silte armatuurlaualt.
Näiteks saate lisandmoodulitele lisada skriptitud muutujaid, pärida neid lahtritest siltide abil ja muuta neid tsentraliseeritud paneelilt, levitades muudatusi kogu aruandes. Samuti saate vaadata, kuidas.
Nendes keskkondades esinevate levinud väljendite hulka kuuluvad:
- =Arv(erinev)Loendab väljal unikaalsed väärtused.
- =täna(): Tagastab praeguse kuupäeva.
- =aasta(nüüd()): Tagastab käesoleva aasta täitmishetkel.
Nendele muutujatele ja avaldistele saate rakendada Exceli natiivset vormingut ning hallata nende loomist, muutmist või kustutamist lisandmoodulite paneelilt. Lisateavet ridade peitmise kohta nende väärtuste põhjal leiate kasulikest ressurssidest.
Muutujate või avaldiste vormindamine ja kustutamine Exceli aruannetes
Muutujate ja avaldistega lahtreid saab kohandada Exceli vormingutega: stiilid, värvid, arvuvormingud jne. See kajastub genereeritud aruandes. Muutuja või avaldise kustutamiseks valige lihtsalt lisandmoodulite paneelilt lahter ja klõpsake nuppu „Kustuta“. See kustutab sildi ja sellega seotud objekti ning seda saab kustutada ka Exceli tavaliste funktsioonide abil, jättes lahtri uute lisamiste jaoks puhtaks.
Muutujate õige deklareerimine: Dim, Public, Private, Static
Muutuja deklareerimise viis määrab selle ulatuse , kestuse ja käitumise erinevate teostuskordade puhul. Peamised valikud on järgmised:
- DimKõige levinum viis. Loob protseduurides või moodulites lokaalseid muutujaid, kui need deklareeritakse väljaspool neid.
- avalikGlobaalsed muutujad, millele pääseb ligi kogu projekti vältel.
- Era-: Ulatuspiirang kehtib ainult mooduli piires, kus need deklareeriti, ilma juurdepääsuta teistelt moodulitelt.
- StaatilineLokaalsed muutujad, mis säilitavad oma väärtuse sama protseduuri kõnede vahel.
Muutujate õige deklareerimine aitab vältida vigu, mäluprobleeme ja koodis segadust . Option Expliciti kasutamisel nõuab VBA kõigi muutujate deklareerimist, mis soodustab töökindlamat ja professionaalsemat koodi.
Täiustatud näpunäited ja levinud vead muutujate kasutamisel Excelis
Kui teil on juba kogemusi Exceli muutujatega, aitavad need näpunäited teil seda parandada:
- Vältige muutujate nimede taaskasutamist erinevates makrodes või moodulites, et vältida segadusest või valest juurdepääsust tingitud vigu.
- Et muutuja säilitaks oma väärtuse täitmiste vahel, kasutage Static'ut konkreetsetes protseduurides või deklareerige muutuja mooduli tasemel.
- Globaalsete muutujate kasutamise piiramine, kuna need võivad raskendada andmevoo hooldust ja mõistmist.
- Parem on alati andmetüüp täpsustada. selle asemel, et jätta see vaikimisi Variantiks.
- Rakendusteüleste automatiseeringute jaoks, lõplik, kasutab hästi trükitud objekte ja korrektseid viiteid, et vältida kokkusobimatusi.
- Pöörake tähelepanu iga muutuja elutsüklile et vältida "kummitus" või ootamatuid väärtusi.
Levinumad vead ja lahendused:
- Täisarvulisele muutujale teksti määramine: tekitab tüübivea. Veenduge, et tüüp vastab andmetele.
- Ära deklareeri muutujat ja tehke trükivigu: valikuga Option Explicit tuvastab kompilaator need vead.
- Eeldatakse, et kohalikud muutujad säilitavad oma väärtuse pärast protseduuri lõpetamist: pidage meeles, et need kustutatakse pärast protseduuri lõpetamist.
Viimased värskendused: LET-funktsioon Exceli valemites
Exceli uuemate versioonide peamine uuendus on LET- funktsioon , mis võimaldab teil valemites muutujaid defineerida ilma VBA-d kasutamata. See on väga kasulik keerukate arvutuste loetavuse ja tõhususe parandamiseks. Lisateavet selle kasutamise kohta leiate lisateavetest.
Muutujad ja avaldised praktikas: lõplikud soovitused
Muutujate tõhus haldamine Excelis, olgu need siis makrodes, aruannetes või täiustatud valemites, on investeering, mis suurendab teie tootlikkust ja täpsust. Nõuetekohane haldamine aitab luua turvalisemaid, hooldatavamaid ja tõhusamaid lahendusi ning vähendada aeganõudvaid vigu.
Soovitame teil katsetada erinevat tüüpi muutujate, ulatuste ja funktsioonidega, otsides alati tasakaalu paindlikkuse ja turvalisuse vahel . Exceli muutujate põhjalik mõistmine avab laia valiku võimalusi, olenemata sellest, kas olete algaja, edasijõudnud kasutaja või professionaal.
Kirglik kirjanik baitide maailmast ja üldse tehnoloogiast. Mulle meeldib jagada oma teadmisi kirjutamise kaudu ja just seda ma selles ajaveebis teengi, näitan teile kõike kõige huvitavamat vidinate, tarkvara, riistvara, tehnoloogiliste suundumuste ja muu kohta. Minu eesmärk on aidata teil digimaailmas lihtsal ja meelelahutuslikul viisil navigeerida.