Excel VBA -tietotyyppien (muuttujien ja vakioiden) ymmärtäminen

Excel VBA: ssa sinun on usein käytettävä muuttujia ja vakioita.

Kun työskentelet VBA: n kanssa, muuttuja on paikka tietokoneen muistissa, johon voit tallentaa tietoja. Muuttujalle tallennettavien tietojen tyyppi riippuu muuttujan tietotyypistä.

Jos haluat esimerkiksi tallentaa kokonaislukuja muuttujaan, tietotyyppisi on kokonaisluku ja jos haluat tallentaa tekstiä, tietotyyppisi on merkkijono.

Lisätietoja tietotyypeistä myöhemmin tässä opetusohjelmassa.

Vaikka muuttujan arvo muuttuu koodin ollessa käynnissä, vakio pitää arvon, joka ei koskaan muutu. Hyvänä koodauskäytännönä sinun on määritettävä tietotyyppi - muuttuja ja vakio.

Miksi käyttää muuttujia VBA: ssa?

Kun koodit VBA: ssa, tarvitset muuttujia, joiden avulla voit pitää arvon.

Muuttujan käytön etu on, että voit muuttaa muuttujan arvoa koodissa ja jatkaa sen käyttöä koodissa.

Esimerkiksi alla on koodi, joka lisää 10 ensimmäistä positiivista numeroa ja näyttää sitten tuloksen viestikentässä:

Sub AddFirstTenNumbers () Dim Var kokonaislukuna Dim i kokonaislukuna Dim k kokonaislukuna i = 1-10 k = k + i Seuraava i MsgBox k End Sub

Yllä olevassa koodissa on kolme muuttujaa - Var, ija k.

Yllä oleva koodi käyttää For Next -silmukkaa, jossa kaikki nämä kolme muuttujaa muuttuvat silmukoiden valmistuttua.

Muuttujan hyödyllisyys on siinä, että sitä voidaan muuttaa koodin ollessa käynnissä.

Alla on muutamia sääntöjä, jotka on pidettävä mielessä, kun muuttujia nimetään VBA: ssa:

  1. Voit käyttää aakkosia, numeroita ja välimerkkejä, mutta ensimmäisen numeron on oltava aakkoset.
  2. Et voi käyttää välilyöntiä tai pistettä muuttujan nimessä. Voit kuitenkin käyttää alaviivamerkkiä, jotta muuttujien nimet ovat luettavampia (kuten korko_korko)
  3. Et voi käyttää erikoismerkkejä (#, $, %, &, tai!) Muuttujien nimissä
  4. VBA ei erota tapausta muuttujan nimessä. Joten "InterestRate" ja "interestrate" ovat samat VBA: lle. Voit käyttää muuttuja, jotta muuttujat ovat luettavampia.
  5. VBA: lla on joitakin varattuja nimiä, joita voit käyttää muuttujan nimessä. Et voi esimerkiksi käyttää sanaa "Seuraava" muuttujan nimenä, koska se on varattu nimi seuraavalle silmukalle.
  6. Muuttujan nimi voi olla enintään 254 merkkiä pitkä.

Muuttujien tietotyyppi

Jotta muuttujia voitaisiin käyttää parhaalla mahdollisella tavalla, on hyvä määrittää muuttujan tietotyyppi.

Muuttujalle määrittämäsi tietotyyppi riippuu siitä, minkä tyyppisiä tietoja haluat kyseisen muuttujan säilyttävän.

Alla on taulukko, joka näyttää kaikki käytettävissä olevat tietotyypit, joita voit käyttää Excel VBA: ssa:

Tietotyyppi Käytetty tavu Arvoalue
Tavu 1 tavu 0-255
Boolen 2 tavua Totta vai tarua
Kokonaisluku 2 tavua -32 768 -32 767
Pitkä (pitkä kokonaisluku) 4 tavua -2 147 483 648 -2 147 483 647
Yksittäinen 4 tavua -3.402823E38 --1,401298E -45 negatiivisille arvoille; 1.401298E-45-3.402823E38 positiivisille arvoille
Kaksinkertainen 8 tavua -1,79769313486231E308--4,94065645841247E-324 negatiivisille arvoille; 4.94065645841247E-324-1.79769313486232E308 positiivisille arvoille
Valuutta 8 tavua -922 337 203 685 477,5808 -922 337 203 685 477,5807
Desimaali 14 tavua +/- 79228162,514,264,337,593,543,950,335 ilman desimaalia; +/- 7,9228162514264337593543950335, jossa on 28 paikkaa desimaalin oikealla puolella
Päivämäärä 8 tavua 1. tammikuuta 100 - 31. joulukuuta 9999
Esine 4 tavua Mikä tahansa objektiviittaus
Merkkijono (vaihteleva pituus) 10 tavua + merkkijonon pituus 0 - noin 2 miljardia
Merkkijono (kiinteä pituus) Merkkijonon pituus 1 - noin 65 400
Vaihtoehto (numeroilla) 16 tavua Mikä tahansa numeerinen arvo kaksinkertaiseen asti
Vaihtoehto (hahmoilla) 22 tavua + merkkijonon pituus Sama alue kuin vaihtuvan pituisella merkkijonolla
Käyttäjän määrittelemä Vaihtelee Kunkin elementin alue on sama kuin sen tietotyypin alue.

Kun määrität tietotyypin muuttujalle koodissasi, se kertoo VBA: lle, kuinka tämä muuttuja tallennetaan ja kuinka paljon tilaa sille varataan.

Jos esimerkiksi haluat käyttää muuttujaa, joka on tarkoitettu pitämään kuukauden numero, voit käyttää BYTE -tietotyyppiä (johon mahtuu arvot 0–255). Koska kuukauden numero ei ole yli 12, tämä toimii hyvin ja myös varaa vähemmän muistia tälle muuttujalle.

Päinvastoin, jos tarvitset muuttujan rivinumeroiden tallentamiseen Exceliin, sinun on käytettävä tietotyyppiä, johon mahtuu jopa 1048756. Voit siis käyttää pitkää tietotyyppiä.

Muuttuvien tietotyyppien ilmoittaminen

Hyvänä koodauskäytännönä sinun on ilmoitettava muuttujien (tai vakioiden) tietotyyppi kirjoittaessasi koodia. Näin varmistat, että VBA varaa vain määritetyn muistin muuttujalle ja tämä voi nopeuttaa koodisi toimintaa.

Alla on esimerkki, jossa olen ilmoittanut eri tietotyyppejä eri muuttujille:

Sub DeclaringVariables () Dim X kokonaislukuna Dim Email merkkijonona Dim FirstName As String Dim RowCount as Long Dim Today

Jos haluat ilmoittaa muuttuvan tietotyypin, sinun on käytettävä DIM -käskyä (joka on lyhenne sanasta Dimension).

Sisään 'Dim X kokonaislukunaOlen ilmoittanut muuttujan X kokonaislukutietotyypiksi.

Nyt kun käytän sitä koodissani, VBA tietäisi, että X voi sisältää vain kokonaislukuisen tietotyypin.

Jos yritän antaa sille arvon, joka ei ole kokonaisluku, saan virheilmoituksen (kuten alla):

Huomautus: Voit myös jättää ilmoittamatta tietotyypin, jolloin VBA ottaa automaattisesti huomioon tietotyypin variantin muuttujan. Vaihtoehtoinen tietotyyppi voi sisältää minkä tahansa tietotyypin. Vaikka tämä saattaa tuntua kätevältä, ei ole paras käytäntö käyttää tietotyypin variantteja. Se vie yleensä enemmän muistia ja voi hidastaa VBA -koodisi toimintaa.

Muuttuvan ilmoituksen tekeminen pakolliseksi (vaihtoehto nimenomainen)

Vaikka voit koodata ilmoittamatta muuttujia, tämä on hyvä käytäntö.

Muistin säästämisen ja koodin tehostamisen lisäksi muuttujien ilmoittamisella on toinen merkittävä etu - se auttaa tallentamaan virheellisesti kirjoitettujen muuttujien nimien aiheuttamat virheet.

Varmistaaksesi, että joudut ilmoittamaan muuttujia, lisää seuraava rivi moduulin yläosaan.

Vaihtoehto Selkeä

Kun lisäät "Option Explicit", sinun on ilmoitettava kaikki muuttujat ennen koodin suorittamista. Jos on olemassa muuttuja, jota ei ole ilmoitettu, VBA näyttää virheen.

Option Explicitin käytöstä on valtava hyöty.

Joskus saatat tehdä kirjoitusvirheen ja kirjoittaa muuttujan nimen, joka on väärä.

Normaalisti VBA ei voi mitenkään tietää, onko se virhe vai tahallinen. Kuitenkin, kun käytät vaihtoehtoa Explicit, VBA näkee väärin kirjoitetun muuttujan nimen uutena muuttujana, jota ei ole ilmoitettu ja joka näyttää sinulle virheen. Tämä auttaa sinua tunnistamaan nämä väärin kirjoitetut muuttujien nimet, joita voi olla melko vaikea havaita pitkässä koodissa.

Alla on esimerkki, jossa Option Explicit -toiminnon käyttäminen tunnistaa virheen (joka ei olisi voinut jäädä loukkuun, jos en olisi käyttänyt Option Explicit -toimintoa)

Sub CommissionCalc () Dim CommissionRate as Double If Range ("A1"). Arvo> 10000 Sitten CommissionRate = 0,1 Muu CommissionRtae = 0,05 End If MsgBox "Total Commission:" & Range ("A1"). Arvo * CommissionRate End Sub

Huomaa, että olen kirjoittanut väärin sanan ”CommissionRate” tässä koodissa.

Jos en käytä vaihtoehtoa Explicit, tämä koodi suoritetaan ja antaa minulle väärän kokonaispalkkion arvon (jos solun A1 arvo on alle 10000).

Mutta jos käytän vaihtoehtoa Explicit moduulin yläosassa, se ei anna minun suorittaa tätä koodia ennen kuin korjaan väärin kirjoitetun sanan tai ilmoitan sen toiseksi muuttujaksi. Se näyttää seuraavan kuvan mukaisen virheen:

Vaikka voit lisätä rivin "Option Explicit" joka kerta, kun koodit, tässä on vaiheet, joilla se näytetään oletuksena:

  1. Napsauta VB Editor -työkalurivin Työkalut -painiketta.
  2. Napsauta Asetukset.
  3. Napsauta Asetukset -valintaikkunassa Muokkaus -välilehteä.
  4. Valitse vaihtoehto - "Vaadi muuttujan ilmoitus".
  5. Napsauta OK.

Kun olet ottanut tämän vaihtoehdon käyttöön, aina kun avaat uuden moduulin, VBA lisää siihen automaattisesti rivin "Option Explicit".

Huomautus: Tämä vaihtoehto vaikuttaa vain kaikkiin moduuleihin, jotka luot, kun tämä vaihtoehto on otettu käyttöön. Tämä ei vaikuta kaikkiin olemassa oleviin moduuleihin.

Muuttujien laajuus

Toistaiseksi olemme nähneet kuinka julistaa muuttuja ja määrittää sille tietotyyppejä.

Tässä osassa käsittelen muuttujien laajuutta ja sitä, kuinka voit julistaa muuttujan käytettäväksi vain aliohjelmassa, koko moduulissa tai kaikissa moduuleissa.

Muuttujan laajuus määrittää, missä muuttujaa voidaan käyttää VBA: ssa,

Muuttujan määrittäminen Excel VBA: ssa on kolme tapaa:

  1. Yhden aliohjelman sisällä (paikalliset muuttujat)
  2. Moduulin sisällä (moduulitason muuttujat)
  3. Kaikissa moduuleissa (julkiset muuttujat)

Katsotaanpa kutakin näistä yksityiskohtaisesti.

Yhden aliohjelman sisällä (paikalliset muuttujat)

Kun ilmoitat muuttujan aliohjelmassa/menettelyssä, kyseinen muuttuja on käytettävissä vain kyseiselle aliohjelmalle.

Et voi käyttää sitä muissa moduulin aliohjelmissa.

Heti kun aliohjelma päättyy, muuttuja poistetaan ja sen käyttämä muisti vapautuu.

Alla olevassa esimerkissä muuttujat ilmoitetaan aliohjelmassa ja ne poistetaan, kun tämä aliohjelma päättyy.

Moduulin sisällä (moduulitason muuttujat)

Kun haluat muuttujan olevan käytettävissä moduulin kaikkiin toimenpiteisiin, sinun on ilmoitettava se moduulin yläosassa (eikä missään aliohjelmassa).

Kun olet ilmoittanut sen moduulin yläosassa, voit käyttää kyseistä muuttujaa kaikissa moduulin toimenpiteissä.

Yllä olevassa esimerkissä muuttuja "i" on ilmoitettu moduulin yläosassa ja se on kaikkien moduulien käytettävissä.

Huomaa, että aliohjelman päätyttyä moduulitason muuttujia ei poisteta (se säilyttää arvon).

Alla on esimerkki, jossa minulla on kaksi koodia. Kun suoritan ensimmäisen menettelyn ja sen jälkeen toisen, i: n arvoksi tulee 30 (koska se sisältää arvon 10 ensimmäisestä menettelystä)

Kaikissa moduuleissa (julkiset muuttujat)

Jos haluat muuttujan olevan käytettävissä työkirjan kaikissa toimenpiteissä, sinun on ilmoitettava se julkisella avainsanalla (DIM: n sijaan).

Moduulin yläosassa oleva alla oleva koodirivi tekisi muuttujan ”CommissionRate” saataville kaikissa työkirjan moduuleissa.

 Julkinen komissio Arvioi tuplana

Voit lisätä muuttujan ilmoituksen (käyttämällä julkista avainsanaa) mihin tahansa moduuliin (yläreunassa ennen toimenpiteitä).

Staattiset muuttujat (joka säilyttää arvon)

Kun työskentelet paikallisten muuttujien kanssa, heti kun toimenpide on päättynyt, muuttuja menettää arvon ja poistetaan VBA: n muistista.

Jos haluat, että muuttuja säilyttää arvon, sinun on käytettävä Staattinen avainsana.

Näytän ensin, mitä tapahtuu normaalissa tapauksessa.

Alla olevassa koodissa, kun suoritan toimenpiteen useita kertoja, se näyttää arvon 10 joka kerta.

Alamenettely1 () Dim i kokonaislukuna i = i + 10 MsgBox i End Sub

Jos nyt käytän staattista avainsanaa DIM: n sijasta ja suoritan toimenpiteen useita kertoja, se näyttää arvot edelleen 10: n askelin. Tämä tapahtuu, kun muuttuja "i" säilyttää arvon ja käyttää sitä laskennassa.

Alamenettely1 () Staattinen i kokonaislukuna i = i + 10 MsgBox i End Sub

Vakioiden ilmoittaminen Excel VBA: ssa

Muuttujat voivat muuttua koodin suorittamisen aikana, mutta jos haluat kiinteitä arvoja, voit käyttää vakioita.

Vakion avulla voit määrittää arvon nimetylle merkkijonolle, jota voit käyttää koodissasi.

Vakion käytön etuna on, että se helpottaa koodin kirjoittamista ja ymmärtämistä, ja voit myös hallita kaikkia kiinteitä arvoja yhdestä paikasta.

Jos esimerkiksi lasket provisioita ja provisioprosentti on 10%, voit luoda vakion (CommissionRate) ja antaa sille arvon 0,1.

Jos palkkioprosentti muuttuu tulevaisuudessa, sinun on vain tehtävä muutos yhdessä paikassa sen sijaan, että muuttaisit sitä manuaalisesti koodissa kaikkialla.

Alla on esimerkki koodista, jossa olen määrittänyt arvon vakioon:

Sub CalculateCommission () Dim CommissionValue As Double Const CommissionRate As Double = 0.1 CommissionValue = Range ("A1") * CommissionRate MsgBox CommissionValue End Sub

Seuraavaa riviä käytetään vakion ilmoittamiseen:

Const CommissionRate As Double = 0,1

Kun julistat vakioita, sinun on aloitettava avainsanalla "Const", Jota seuraa vakion nimi.

Huomaa, että olen määrittänyt vakion tietotyypin kaksinkertaiseksi tässä esimerkissä. Jälleen on hyvä käytäntö määrittää tietotyyppi, jotta koodi toimii nopeammin ja tehokkaammin.

Jos et ilmoita tietotyyppiä, sitä pidetään tietotyypin muunnoksena.

Aivan kuten muuttujat, myös vakioilla voi olla laajuus sen mukaan, missä ja miten ne on ilmoitettu:

  1. Yhden aliohjelman sisällä (paikalliset vakiot): Nämä ovat käytettävissä aliohjelmassa/menettelyssä, jossa ne ilmoitetaan. Menettelyn päätyttyä nämä vakiot poistetaan järjestelmän muistista.
  2. Moduulin sisällä (moduulitason vakiot): Nämä ilmoitetaan moduulin yläosassa (ennen toimenpiteitä). Nämä ovat käytettävissä kaikkiin moduulin toimenpiteisiin.
  3. Kaikissa moduuleissa (julkiset vakiot): Nämä ilmoitetaan käyttämällä julkista avainsanaa minkä tahansa moduulin yläosassa (ennen toimenpiteitä). Nämä ovat käytettävissä kaikissa moduuleissa.

Saatat pitää myös seuraavista VBA -opetusohjelmista:

  • Makron tallentaminen Exceliin
  • Solujen ja alueiden käyttö Excel VBA: ssa
  • Laskentataulukoiden käyttäminen Excel VBA: n avulla
  • Työkirjojen käsittely Excel VBA: ssa
  • VBA -tapahtumat
  • Excel VBA -silmukat
  • Makron suorittaminen Excelissä
  • Jos sitten muu ilmoitus Excel VBA: ssa.

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave