Muuttujat ja tietotyypit
Pyyhkäise näyttääksesi valikon
Jokainen kirjoittamasi proseduurin tarvitsee paikan, jossa säilyttää arvoja työn aikana — esimerkiksi asiakkaan nimi, juokseva summa tai kyllä/ei-lippu. Tätä tarkoittaa muuttuja: nimetty laatikko muistissa, johon voit asettaa arvon ja lukea sen myöhemmin. Luot muuttujan komennolla Dim (lyhenne sanasta "dimension"), ja kerrot VBA:lle etukäteen, minkä tyyppistä tietoa se sisältää:
Dim productName As String
Dim currentStock As Integer
Dim unitPrice As Double
Jokainen rivi varaa nimikoidun paikan: productName voi sisältää vain tekstiä, currentStock vain kokonaislukuja, unitPrice vain desimaalilukuja. Tyypin määrittely etukäteen ei ole byrokratiaa — se mahdollistaa sen, että VBA havaitsee virheet ennen kuin niistä tulee bugeja. Jos yrität suorittaa productName = 47, VBA pysäyttää sinut heti tyyppivirheeseen, sen sijaan että tallentaisi väärän arvon ja aiheuttaisi hämmennystä myöhemmin.
Yleiset tietotyypit
Nyrkkisääntö: käytä Long-tyyppiä laskureissa ja rivinumeroissa Integer-tyypin sijaan — se ei ole hitaampi nykyaikaisessa Excelissä, eikä se ylivuoda suurissa tietomäärissä. Näet Dim i As Long kaikkialla tällä kurssilla.
Option Explicit
Lisää tämä yksittäinen rivi jokaisen moduulin alkuun, ennen yhtäkään Sub-määritystä. Se muuttaa yhden asian: VBA ei enää suostu suorittamaan riviä, jossa käytetään muuttujaa, jota ei ole ensin määritelty Dim-komennolla:
Option Explicit
Sub Example()
Dim total As Double
total = 100 ' works — declared above
toatl = 200 ' typo — Option Explicit catches this at compile time
End Sub
Ilman Option Explicit-määritystä kirjoitusvirhe luo huomaamatta uuden muuttujan nimeltä total, ja saatat käyttää kaksikymmentä minuuttia ihmetellen, miksi total ei koskaan muutu. Tämä yksittäinen tapa ehkäisee enemmän bugeja kuin mikään muu tässä luvussa.
Vakiot
Vakiot ovat nimettyjä arvoja, jotka eivät muutu koodin suorituksen aikana — ihanteellisia esimerkiksi verokannoille tai raja-arvoille:
Const REORDER_THRESHOLD As Integer = 20
Kun käytät REORDER_THRESHOLD-vakioita sen sijaan, että kirjoittaisit 20 joka paikkaan, mahdollisen liiketoimintasäännön muuttuessa riittää yhden rivin muokkaus koko koodin sijaan.
Tehtävä
- Kirjoita tiedostoon
Section_2_VBA_Fundamentals.xlsmSub, jossa määritelläänString-muuttuja tuotteen nimelle,Doublehinnalle jaIntegervarastosaldolle. - Aseta niille arvot tuotteelle
USB-C Hubkirjoittamalla arvot suoraan. - Näytä kaikki kolme yhdessä viestissä käyttämällä
MsgBox-komentoa ja yhdistämällä arvot yhteen merkkijonoon. - Lisää
Const LOW_STOCK As Integer = 20Sub-rutiinisi yläpuolelle ja käytä sitäMsgBox-viestissä vertaamalla sitä varastosaldoon.
- Tarvitset kolme
Dim-riviä eri tyypeillä — katso tarvittaessa uudelleen kuvaa 2.1:Dim name As Type. - USB-C Hubin rivi: Hinta 39.50, Varasto 44. Aseta nämä suoraan:
price = 39.50. - Yhdistäminen tehdään
&-merkillä, ei+. Rakenna merkkijono osissa:"Name: " & productName & ", Price: " & price. - Vakiot määritellään
Sub-rutiinien ulkopuolelle, moduulin alkuun hetiOption Explicit-rivien jälkeen. VertailestockCount-muuttujaa jaLOW_STOCK-vakioita tavallisella>tai<-vertailullaMsgBox-merkkijonossa —If-ehtolauseita ei vielä tarvita, riittää että näytät molemmat arvot, jotta voit vertailla niitä silmämääräisesti.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme