Variantas Kintamojo tipas
Kintamasis kintamasis gali turėti bet kurio laiko duomenis (eilutes, sveikuosius skaičius, dešimtainius skaičius, objektus ir kt.). Jei nepaskelbsite kintamojo tipo, jūsų kintamasis bus laikomas variantu.
Norėdami deklaruoti kintamąjį, naudokite „Dim Statement“ (santrumpa „Dimension“):
1 | Dim varName kaip Variant |
1 | Dim rng kaip variantas |
Tada, norėdami priskirti kintamojo vertę, tiesiog naudokite lygybės ženklą:
1 | varName = "Jonas" |
1 | rng = lakštai (1). Diapazonas ("A1") |
Įtraukimas į procedūrą atrodo taip:
12345678910 | Antrinis pavyzdys ()“skelbti variantusDim strName As VariantDim rng Kaip variantas“užpildykite kintamuosiusstrName = "Fredas Smitas"Nustatykite rng = Lakštai (1). Diapazonas („A1“)“užpildykite lapąrng.Value = strNamePabaiga Sub |
Jei paleisite aukščiau esantį kodą, 1 lapo A1 langelis bus užpildytas „Fred Smith“
Remdamiesi aukščiau pateiktais pavadinimais, galime daryti išvadą, kad varName būtų teksto, o objSheet būtų darbalapio objektas. Bet iš tikrųjų bet kokio tipo duomenys gali būti nukreipti į kintamąjį.
Aukščiau nurodytus kintamuosius galite užpildyti taip, ir klaida neįvyks.
1 | varName = 6 |
1 | objSheet - „Fredas“ |
Įprastas kintamųjų naudojimas yra neįprastas ir nėra laikoma gera praktika. Tačiau kartais kintamųjų variantai yra naudingi.
Skelbti kintamąjį kintamuoju modulio ar pasauliniu lygiu
Ankstesniame pavyzdyje procedūros metu nurodėte kintamąjį Variant. Kintamieji, deklaruojami naudojant procedūrą, gali būti naudojami tik tos procedūros metu.
Vietoj to galite deklaruoti kintamuosius kintamuosius modulio ar visuotiniu lygiu.
Modulio lygis
Modulio lygis kintamieji deklaruojami kodo modulių viršuje su Mat pareiškimas.
Šiuos kintamuosius galima naudoti atliekant bet kokias to kodo modulio procedūras.
Pasaulinis lygis
Pasaulinis lygis kintamieji taip pat deklaruojami kodo modulių viršuje. Tačiau, užuot naudoję Mat teiginį, jūs naudojate Viešas teiginys, nurodantis, kad eilutės kintamąjį galima naudoti visame jūsų VBA projekte.
1 | Viešas strName kaip variantas |
Jei deklaruojate kintamąjį modulio lygiu ir naudojate kitame modulyje, įvyks klaida.
Jei pasirinkote kintamąjį naudodami viešąjį raktinį žodį, klaida neįvyktų ir procedūra vyktų puikiai.
Varianto naudojimas „Excel“ užpildyti
Apsvarstykite šią procedūrą:
12345678910111213141516171819 | Antrinis kintamasis“deklaruokite eilutę, kurioje būtų produkto pavadinimasDim strProduct kaip eilutė“deklaruokite sveiką skaičių, kad išlaikytumėte produkto kiekįDim iQty kaip sveikasis skaičius“deklaruokite dvigubai, kad išlaikytumėte produkto kainą ir bendrą kainąDim dbl Kaina dvigubaDim dbl Iš viso kaip dvigubas“užpildykite kintamuosiusstrProduct = "Visi universalūs miltai"iQty = 3dblPrice = "5,00 USD"dblTotal = "15,00 USD"“užpildykite„ Excel “lapąDiapazonas ("A1") = strProductDiapazonas ("A2") = iQtyDiapazonas ("A3") = dblKainaDiapazonas („A4“) = dblPabaiga Sub |
Kai vykdome šį kodą, įvyksta ši klaida.
Spustelėkite Derinti
Negalite į kintamąjį įdėti dolerio ženklo, nes kintamasis deklaruojamas kaip a Dvigubas, todėl negali saugoti eilučių reikšmių.
Paskelbti dblKaina ir dblVisa kaip variantai, o tai reiškia, kad neapsiribojate tik duomenų tipu.
1 | Dim dblKaina kaip variantas |
1 | Dim dblTotal as Variant |
Paleiskite kodą iš naujo ir duomenys bus rodomi „Excel“ lape, kaip turėtų.
Atminkite, kad į A4 ir A5 įvesti duomenys automatiškai konvertuojami „Excel“ į skaičius.
Dinaminio masyvo paskelbimas
Kintamieji variantai taip pat yra naudingi, kai deklaruojate dinaminį masyvą, nes jie leidžia keisti masyvo dydį vykdymo metu.
SuVariantų masyvas, jums nereikia apibrėžti masyvo dydžio. Dydis bus automatiškai sureguliuotas.
123456789 | SubvariantasArray ()Dim arrList () Kaip variantas„Apibrėžkite vertybesarrList = Masyvas (1, 2, 3, 4)'Keisti vertesarrList = Masyvas (1,2,3,4,5,6)„Išvesties padėtis 4„MsgBox arrVar“ (4)Pabaiga Sub |