Muuttujien ja vakioiden ymmärtäminen Excel-makroissa

Tässä artikkelissa opit, mitä vakioita ja muuttujia makroissa on, missä niitä voidaan käyttää ja mikä on tärkein ero eri tietotyyppien välillä. Paljastuu myös, miksi vakioita tarvitaan, jos voit vain kirjoittaa muuttujan etkä koskaan muuta sitä.

Kuten muutkin ohjelmointikielet, tiedot voidaan tallentaa muuttujiin tai vakioihin (joita molempia kutsutaan usein myös tietosäiliöiksi). Tämä on tärkein ero näiden käsitteiden välillä. Edellinen voi muuttua riippuen siitä, mitä ohjelmassa tapahtuu. Vakiot puolestaan ​​asetetaan kerran, eivätkä ne muuta niiden arvoa.

Vakiot voivat olla hyödyllisiä, jos sinun on käytettävä samaa suurta arvoa useita kertoja. Numeron kopioimisen sijaan voit kirjoittaa vakion nimen. Voit esimerkiksi käyttää vakiota "Pi" tallentaaksesi Pi:n, joka on vakioarvo. Se on erittäin suuri, ja joka kerta on melko vaikea kirjoittaa sitä tai etsiä ja kopioida sitä. Ja niin, riittää, että kirjoitat kaksi merkkiä, ja ympäristö käyttää automaattisesti haluttua numeroa.

Excel-käyttäjän on ilmoitettava muuttujat, jos hän joutuu ajoittain muuttamaan niihin tallennettuja arvoja. Voit esimerkiksi asettaa muuttujan nimeltä sVAT_Rate, joka tallentaa tuotteen nykyisen ALV-prosentin. Jos se muuttuu, voit korjata sen nopeasti. Tämä on erityisen hyödyllistä niille, jotka harjoittavat liiketoimintaa Yhdysvalloissa, jossa jotkin tavarat eivät välttämättä ole arvonlisäveron alaisia ​​(ja tämä vero vaihtelee myös osavaltioittain).

Tietotyypit

Jokainen tietosäiliö voi olla yksi useista tyypeistä. Tässä on taulukko, joka kuvaa käsiteltyjen tietojen vakiotyypit. Niitä on monia, ja aloittelijasta saattaa aluksi tuntua, että ne toistavat toisiaan. Mutta tämä on illusorinen tunne. Lue, miksi oikean tietotyypin määrittäminen on niin tärkeää.

Ei ole suositeltavaa käyttää tietotyyppiä, joka vie enemmän muistitilaa pienille numeroille. Esimerkiksi numerolle 1 riittää, että käytetään tavutyyppiä. Tällä on myönteinen vaikutus suoritettavan moduulin suorituskykyyn, erityisesti heikoilla tietokoneilla. Mutta on tärkeää, ettei tässä mennä liian pitkälle. Jos käytät liian kompaktia tietotyyppiä, ylisuuri arvo ei välttämättä mahdu siihen.

Vakioiden ja muuttujien ilmoittaminen

Tietosäilön käyttäminen ilmoittamatta siitä ensin on erittäin suositeltavaa. Silloin voi syntyä useita ongelmia, joiden välttämiseksi on tarpeen kirjoittaa muutama pieni koodirivi muuttujien tai vakioiden luetteloimiseksi.

Muuttujan ilmoittamiseen käytetään Dim-käskyä. Esimerkiksi näin:

Himmennä Muuttujan_nimi Kokonaislukuna

Muuttujan_nimi on muuttujan nimi. Seuraavaksi kirjoitetaan As-operaattori, joka ilmaisee tietotyypin. Merkkijonojen "Variable_Name" ja "Integer" sijaan voit lisätä oman nimesi ja tietotyyppisi.

Vakiot voidaan myös ilmoittaa, mutta sinun on ensin määritettävä niiden arvo. Yksi vaihtoehdoista on:

Vakio iMaxCount = 5000

Rehellisesti sanottuna joissain tapauksissa voit tehdä muuttujan ilmoittamatta, mutta tässä tapauksessa niille annetaan automaattisesti tyyppi Variant. Tätä ei kuitenkaan suositella seuraavista syistä:

  1. Variantti prosessoidaan paljon hitaammin, ja jos tällaisia ​​muuttujia on paljon, tiedon käsittely voi hidastua merkittävästi heikoilla tietokoneilla. Näyttäisi siltä, ​​että ne sekunnit ratkaisevat? Mutta jos sinun on kirjoitettava suuri määrä koodirivejä ja suoritettava se sitten myös heikoilla tietokoneilla (jotka myydään edelleen, koska nykyaikaiset toimistopaketit vaativat paljon RAM-muistia), voit lopettaa työn kokonaan. On tapauksia, joissa huonosti suunniteltu makrojen kirjoittaminen johti sellaisten älykirjojen jäätymiseen, joissa on pieni määrä RAM-muistia ja joita ei ole suunniteltu suorittamaan monimutkaisia ​​​​tehtäviä. 
  2. Nimien kirjoitusvirheet ovat sallittuja, jotka voidaan estää käyttämällä Option Explicit -lausetta, jonka avulla voit löytää ilmoittamattoman muuttujan, jos sellainen löytyy. Tämä on helppo tapa havaita virheet, koska pieninkin kirjoitusvirhe aiheuttaa sen, että tulkki ei pysty tunnistamaan muuttujaa. Ja jos otat muuttujan ilmoitustilan käyttöön, tulkki ei yksinkertaisesti salli makron suorittamista, jos löytyy tietosäiliöitä, joita ei ilmoitettu moduulin alussa.
  3. Vältä virheitä, jotka aiheutuvat muuttujan arvoista, jotka eivät vastaa tietotyyppiä. Normaalisti tekstiarvon määrittäminen kokonaislukumuuttujalle aiheuttaa virheen. Kyllä, toisaalta geneerinen tyyppi annetaan ilman ilmoitusta, mutta jos ne on ilmoitettu etukäteen, niin satunnaiset virheet voidaan välttää.

Siksi kaikesta huolimatta on erittäin suositeltavaa ilmoittaa kaikki muuttujat Excel-makroissa.

On vielä yksi asia, joka on pidettävä mielessä muuttujia määritettäessä. Muuttujalle on mahdollista olla antamatta arvoja sen ilmoittamisen yhteydessä, mutta tässä tapauksessa se saa oletusarvon. Esimerkiksi:

  1. Rivit tyhjennetään.
  2. Numerot saavat arvon 0.
  3. Boolean-tyyppisiä muuttujia pidetään alun perin epätoivoisina.
  4. Oletuspäivämäärä on 30. joulukuuta 1899.

Sinun ei esimerkiksi tarvitse antaa arvoa 0 kokonaislukumuuttujalle, jos arvoa ei ole aiemmin määritetty. Hänellä on jo tämä numero.

Vaihtoehto Explicit Statement

Tämän käskyn avulla voit ilmoittaa kaikki VBA-koodissa käytetyt muuttujat ja määrittää ilmoittamattomien säilöjen olemassaolon ennen koodin suorittamista. Käytä tätä ominaisuutta kirjoittamalla rivi Option Explicit -koodia makrokoodin yläosaan.

Jos sinun on sisällytettävä tämä lausunto koodiisi joka kerta, voit tehdä sen käyttämällä erityistä asetusta VBA-editorissa. Ota tämä vaihtoehto käyttöön seuraavasti:

  1. Siirry polun varrella olevaan kehitysympäristöön - Työkalut > Asetukset.
  2. Avaa tämän jälkeen avautuvassa ikkunassa Editor-välilehti.
  3. Valitse lopuksi Vaadi muuttujan ilmoitus -kohdan vieressä oleva valintaruutu.

Kun olet suorittanut nämä vaiheet, napsauta "OK" -painiketta. 

Siinä kaikki, nyt kun kirjoitat jokaista uutta makroa, tämä rivi lisätään automaattisesti koodin yläosaan.

Vakioiden ja muuttujien laajuus

Jokaisella muuttujalla tai vakiolla on vain rajoitettu laajuus. Se riippuu siitä, missä ilmoitat sen.

Oletetaan, että meillä on funktio Kokonaiskustannukset(), ja se käyttää muuttujaa sVAT_Rate. Moduulin paikasta riippuen sillä on eri laajuus:

Option Explicit

Himmeä sVAT_Rate As Single

Funktio Total_Cost() Kuten Double

.

.

.

End Function

Jos muuttuja ilmoitetaan itse moduulin yläosassa, se etenee koko moduulissa. Eli se voidaan lukea kaikilla toimenpiteillä.

Lisäksi, jos jokin menettelyistä muutti muuttujan arvoa, seuraava myös lukee tämän korjatun arvon. Mutta muissa moduuleissa tätä muuttujaa ei silti lueta.

Option Explicit

Funktio Total_Cost() Kuten Double

Himmeä sVAT_Rate As Single

   .

   .

   .

End Function

Tässä tapauksessa muuttuja ilmoitetaan proseduurin sisällä ja tulkki antaa virheen, jos sitä käytetään toisessa proseduurissa.

Jos haluat muiden moduulien lukevan muuttujan, sinun on käytettävä Public-avainsanaa Dim-avainsanan sijaan. Vastaavasti voit rajoittaa muuttujan laajuuden vain nykyiseen moduuliin käyttämällä Public-lausetta, joka kirjoitetaan sanan Dim sijaan.

Voit asettaa vakioiden laajuuden samalla tavalla, mutta avainsana tässä kirjoitetaan yhdessä Const-operaattorin kanssa.

Tässä on taulukko, jossa on hyvä esimerkki siitä, kuinka se toimii vakioiden ja muuttujien kanssa.

Option Explicit

Julkinen sVAT_Rate As Single

Julkinen Const iMax_Count = 5000

Tässä esimerkissä voit nähdä, kuinka Public-avainsanaa käytetään muuttujan ilmoittamiseen ja mitä sinun on kirjoitettava Visual Basic -editoriin julkisen vakion ilmoittamiseksi. Näiden arvosäiliöiden laajuus koskee kaikkia moduuleja.
Option Explicit

Yksityinen sVAT_Rate As Single

Yksityinen Const iMax_Count = 5000

Tässä muuttujat ja vakiot ilmoitetaan yksityisellä avainsanalla. Tämä tarkoittaa, että ne näkyvät vain nykyisessä moduulissa, eivätkä muiden moduulien menettelyt voi käyttää niitä.

Miksi vakioita ja muuttujia tarvitaan

Vakioiden ja muuttujien käyttö mahdollistaa koodin ymmärrettävyyden lisäämisen. Ja jos aloittelijoilla ei yleensä ole kysymyksiä siitä, miksi muuttujia tarvitaan, niin vakioiden tarpeessa on monia epäselvyyksiä. Ja tämä kysymys näyttää ensi silmäyksellä varsin loogiselta. Loppujen lopuksi voit ilmoittaa muuttujan kerran etkä koskaan muuta sitä.

Vastaus osoittautuu olevan jossain samassa tasossa, mitä tulee tietotyyppien käyttöön, jotka vievät paljon muistitilaa. Jos käsittelemme valtavaa määrää muuttujia, voimme vahingossa muuttaa olemassa olevaa konttia. Jos käyttäjä määrää, että tietty arvo ei koskaan muutu, ympäristö hallitsee tätä automaattisesti.

Tämä on erityisen tärkeää, kun makron ovat kirjoittaneet useat ohjelmoijat. Joku saattaa tietää, että joidenkin muuttujien ei pitäisi muuttua. Ja toinen ei ole. Jos määrität Const-operaattorin, toinen kehittäjä tietää, että tämä arvo ei muutu.

Tai jos on vakio jolla on yksi nimi ja muuttujalla on eri, mutta samanlainen nimi. Kehittäjä voi yksinkertaisesti sekoittaa ne. Esimerkiksi yksi muuttuja, jota ei tarvitse muuttaa, on nimeltään Muuttuja11, ja toinen, jota voidaan muokata, on nimeltään Muuttuja1. Henkilö voi automaattisesti koodia kirjoittaessaan vahingossa ohittaa ylimääräisen yksikön ja olla huomaamatta sitä. Tämän seurauksena arvojen säiliö muuttuu, jota ei pidä koskea.

Tai kehittäjä voi itse unohtaa, mihin muuttujiin hän voi koskea ja mihin ei. Tämä tapahtuu usein, kun koodia kirjoitetaan useita viikkoja ja sen koko kasvaa suureksi. Tänä aikana on helppo unohtaa, mitä tämä tai tuo muuttuja tarkoittaa.

Kyllä, voit tehdä kommentteja tässä tilanteessa, mutta eikö ole helpompi määrittää sana Const?

Päätelmät

Muuttujat ovat olennainen osa makroohjelmointia, joiden avulla voit suorittaa monimutkaisia ​​operaatioita laskelmista käyttäjälle tiedottamiseen tietyistä tapahtumista tai tiettyjen arvojen määrittämiseen laskentataulukon soluissa.

Vakioita tulee käyttää, jos kehittäjä tietää varmasti, että näiden säiliöiden sisältö ei muutu jatkossa. On suositeltavaa olla käyttämättä muuttujia sen sijaan, koska on mahdollista tehdä vahingossa virhe.

Jätä vastaus