Muutujad mängivad enamiku Exceli makrode puhul suurt rolli. Sa ei mõtle muutujate mälu konteinerid, mida saab kasutada oma menetlused. Muutujaid on erinevat tüüpi, millest igaühe ülesandeks on teatud tüüpi andmete hoidmine.
Järgmised on mõned levinumad muutujate tüübid, mida näete.
-
String: sisaldab tekstiandmeid
-
Täisarv: sisaldab arvandmeid vahemikus –32 768 kuni 32 767
-
Pikk: sisaldab arvandmeid vahemikus –2 147 483 648 kuni 2 147 483 647
-
Double: sisaldab ujukoma arvandmeid
-
Variant: mahutab igasuguseid andmeid
-
Boolean: sisaldab binaarandmeid, mis tagastavad tõese või väära
-
Objekt: sisaldab objekti Exceli objektimudelist
Kui loote makros muutuja, deklareerite muutuja . Selleks sisestate Dim (dimensiooni lühend), seejärel muutuja nime ja seejärel tüübi. Näiteks:
Dim MyText stringina
Hämardage MinuNumber täisarvuna
Dim MyWorksheet töölehena
Pärast muutuja loomist saate selle andmetega täita. Siin on mõned lihtsad näited muutuja loomise ja sellele väärtuste määramise kohta.
Dim MyText stringina
MyText = Vahemik("A1").Väärtus
Hämardage MinuNumber täisarvuna
MinuArv = Vahemik("B1").Väärtus * 25
Dim MyObject töölehena
Set MyWorksheet = Sheets("Leht1")
Muutujatele määratud väärtused pärinevad sageli teie lahtritesse salvestatud andmetest. Väärtused võivad aga olla ka teie loodud teave. Kõik sõltub käsil olevast ülesandest. See arusaam saab selgemaks, kui läbite selle raamatu makrosid.
Kuigi see on võimalik luua kood, mis ei kasuta muutujad, saate kokku puutuda palju näiteid VBA koodi, kus muutujad on hõivatud. Sellel on kaks peamist põhjust.
Esiteks ei tea Excel oma olemuselt, milleks teie andmeid kasutatakse. See ei näe numbreid, sümboleid ega tähti. See näeb ainult andmeid. Kui deklareerite muutujaid kindlate andmetüüpidega, aitate Excelil teada, kuidas see peaks teatud andmeosasid käsitlema, et teie makrod annaksid oodatud tulemusi.
Teiseks aitavad muutujad teie koodi tõhusamaks ja hõlpsamini mõistetavaks muuta. Oletame näiteks, et teie lahtris A1 on number, millele viitate oma makros korduvalt. Saate selle numbri hankida, osutades lahtrile A1 iga kord, kui seda vajate:
Alammakro1()
Vahemik("B1").Väärtus = Vahemik("A1").Väärtus * 5
Vahemik("C1").Väärtus = Vahemik("A1").Väärtus * 10
Vahemik("D1").Väärtus = Vahemik("A1").Väärtus * 15
Lõpeta alam
Kuid see makro sunniks Excelit raiskama tsükleid, mis salvestavad mällu sama numbri iga kord, kui osutate lahtrile A1. Samuti, kui teil on vaja oma töövihikut muuta nii, et sihtnumber ei oleks lahtris A1, vaid näiteks lahtris A2, peate oma koodi muutma, muutes kõik viited A1-st A2-le.
Parem viis on salvestada number lahtrisse A1 ainult üks kord. Näiteks saate salvestada väärtuse lahtris A1 täisarvulises muutujas nimega myValue:
Alam muutujaga ()
Dim myValue täisarvuna
myValue = Vahemik("A1").Väärtus
Vahemik("C3").Väärtus = minuVäärtus * 5
Vahemik("D5").Väärtus = minuVäärtus * 10
Vahemik("E7").Väärtus = minuVäärtus * 15
Lõpeta alam
See lähenemisviis mitte ainult ei paranda teie koodi tõhusust (tagades, et Excel loeb lahtris A1 olevat numbrit ainult üks kord), vaid tagab ka selle, et peate redigeerima ainult ühte rida, kui töövihiku kujundus muutub.