Etusivu Aloitus Kontrollit Metodit Muuttujat Ohjausrakenteet Silmukat Matematiikka Debuggaus Virheenkäsittely Vuorovaikutus Valikot Tiedostonkäsittely Ikkunat Leikepöytä Drag and Drop Tiedostopäätteet Linkkejä Harjoitukset
If ehto_1 Then
suoritettava ohjelmakoodi 1
[Elseif ehto_2 Then
suoritettava ohjelmakoodi 2]
[Elseif ehto_n Then
suoritettava ohjelmakoodi n]
[Else
suoritettava ohjelmakoodi n+1]
End If
Käytännössä edellisen "rimpsun" voi lukea siten, että If -lausetta käytettäessä If -lause on pakollinen,
Elseif ja Else -lausekkeita voi käyttää halutessaan. Lähdetään pureutumaan lausekkeisiin esimerkkien kautta.
Private Sub Command1_Click()
Dim X As Long
X = 15
If X = 15 Then
MsgBox "X on viisitoista"
End If
End Sub
Esimerkissämme määrittelemme muuttujan X ja annamme sille alkuarvon 15. Sitten seuraa varsinainen asia
eli If -lause. Vertaamme If -lauseessa muuttujan X -arvoa lukuun 15. Tässä tapauksessa X:n arvo on 15,
joten suoritamme If -lauseen sisällä olevan ohjelmakoodin.
Private Sub Command1_Click()
Dim X As Long
X = 3
If X = 15 Then
MsgBox "X on viisitoista"
End If
End Sub
Edellisessä esimerkissä X:n arvo on 3, joten If -lause ei toteudu. Entäpä jos haluamme verrata useampaa
kuin yhtä arvoa:
Private Sub Command1_Click()
Dim X As Long
X = 3
If X = 15 OR X = 3 Then
MsgBox "X on viisitoista tai kolme"
End If
End Sub
Nyt tutkimme ensin onko X:n arvo viisitoista TAI onko X:n arvo kolme. No, X:n arvo on kolme, joten
lause on totta (True) ja voimme suorittaa If -lauseen sisältämän ohjelmakoodin. Lisätietoja ehtojen
yhdistämisestä täällä.
Private Sub Command1_Click()
Dim X As Long
X = 76
If X = 15 OR X = 3 Then
MsgBox "X on viisitoista tai kolme"
Elseif X > 15 AND X < 50 Then
MsgBox "X on suurempi kuin 15 JA pienempi kuin 50"
Elseif X > 50 Then
MsgBox "X on suurempi kuin 50"
Else
MsgBox "X on jotain muuta kuin edelliset ehdot"
End If
End Sub
Viimeisessä If Then Else -esimerkissämme yhdistimme kaikki ominaisuudet eli käytimme If:iä, Elseif:iä ja
Else:ä. Huomaa, että lausekkeiden järjestys on oltava edellä näytetty eli sinulla ei voi olla Else -lause
esim. Elseif -lausekkeiden välissä.
Private Sub Command1_Click()
Dim X As Long
Dim Y as Long
X = 3
Y = 6
If (X = 15 OR X = 3) AND (Y > 1) Then
MsgBox "X on oltava JOKO viisitoista TAI kolme JA Y on oltava suurempi kuin 1"
End If
End Sub
Kuten ehkä huomasitkin, osa ehdoista on laitettu sulkujen sisään jotta ehtolausekkeita olisi helpompi
ymmärtää.
Select Case iMuuttuja
Case 1
suoritettava ohjelmakoodi 1
[Case 2
suoritettava ohjelmakoodi 2]
[Case 3 to 5
suoritettava ohjelmakoodi 3]
[Case 6,7,8
suoritettava ohjelmakoodi 5]
[Case Else
suoritettava ohjelmakoodi 6]
End Select
Kun puramme edellä näytetyn formaalin määrittelyn, voimme ymmärtää sen siten, että meillä on oltava
Select Case Muuttujan_nimi ja End Select -lauseet. Muuttujan_nimi -paikalla
on tietysti verrattava muuttuja. Em. rivien sisällä on oltava vähintään yksi Case -rivi jonka
sisältämä ohjelmakoodi suoritetaan JOS muuttujan arvo on sama kuin Case -rivin arvo(t).
Voimme esittää Case -rivin arvo(n/t) eri tavoin, yksi tapa on esittää vain yksi arvo kuten
Case 1 -kohdassa on tehty. Tässä tapauksessa rivin sisältämät ohjelmakoodirivit suoritetaan
jos muuttujan arvo on 1. Toinen tapa on kertoa arvoalue kuten rivillä Case 3 to 5 on
tehty, tässä tapauksessa jos muuttujan arvo on 3, 4 tai 5, suoritetaan ohjelmakoodirivit jotka kuuluvat
em. Case -lauseen alle. Kolmas tapa on esitellä halutut arvot pilkulla eroteltuina. Viimeinen
Case Select -ehdon sisältämä koodirivi suoritetaan jos yksikään edellä olleista Case -riveistä
ei ollut toteutunut.
Private Sub Command1_Click()
Dim X As Long
X = 7
Select Case X
Case 0
MsgBox "X on 0"
Case 1 To 5
MsgBox "X on 1, 2, 3, 4 tai 5"
Case 6, 7, 8
MsgBox "X on 6, 7 tai 8"
Case Else
MsgBox "X on jokin muu kuin 0-8"
End Select
End Sub
Esimerkissämme määrittelimme muuttujan X alkuarvolla 7. Select Case X -rivi kertoo meille, että
haluamme tutkia mikä X:n arvo oikein on. Koska X:n arvo on seitsemän, on oikea rivi Case 6, 7, 8
jonka seurauksena suoritamme rivin jälkeen olevan ohjelmakoodirivin MsgBox "X on 6, 7 tai 8".
Huom! Muista, että esimerkeissämme meillä on ollut vain yksi ohjelmakoodirivi ehtojen jälkeen. Ohjelmakoodirivejä voi olla kuitenkin lukematon määrä.