はじめに
前回のおさらいと今回やること
前回はユーザー定義型について学習しました。今回は話がガラリと変わって、ステートメントについて学習していきます。
ステートメントの概要
ステートメントとは?
ステートメントとは、VBAにおいて使われる命令のことを指します。色々な種類のステートメントがありますが、ここでは処理を制御するための制御構文として扱われるものを見ていきたいと思います。条件によって処理を変えたり、繰り返し処理を行う際にこの制御構文が使われます。
主な制御構文の種類
以下がよく使用される制御構文です。
・Ifステートメント
条件によって処理を分岐させるステートメント。条件式は真偽値(True or False)が返る形となる。
条件に合致する場合とそうでない場合のような分岐に対して用いられる。
例)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Sub ifsample() Dim i As Integer, j As Integer i = 3 j = 5 If i * j > 20 Then MsgBox "答えは20よりも大きいです。" Else MsgBox "答えは20よりも小さいです。" End If End Sub |
・Select Caseステートメント
Ifステートメント同様、条件によって処理を分岐させるステートメント。処理の分岐条件が簡単でかつ、多方向に分岐するような際にはこちらで記述してあげた方がすっきり書けることが多い。
例)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Sub selectcasesample() Dim bmi As Integer bmi = 19 Select Case bmi Case Is < 18 MsgBox "やせ過ぎです。" Case Is < 21 MsgBox "やや痩せています。" Case Is < 23 MsgBox "標準です。" Case Is < 25 MsgBox "やや太っています。" Case Else MsgBox "太り過ぎです。" End Select End Sub |
・For…Nextステートメント
繰り返し処理を行うステートメント。何回繰り返し処理を行うかが事前に分かるような場合は、For…Nextステートメントが用いられる。
例)
1 2 3 4 5 6 7 8 9 10 11 | Sub fornextsample() Dim i As Integer, j As Integer j = 5 For i = 1 To 9 MsgBox i * j Next End Sub |
・For Each…Nextステートメント
繰り返し処理を行うステートメント。あるグループ内のメンバーひとつひとつに対して繰り返し処理を行いたい場合などに用いられる。
例)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Sub foreachnextsample() Dim member As Variant Dim kanto( 6 ) kanto( 0 ) = "群馬県" kanto( 1 ) = "栃木県" kanto( 2 ) = "茨城県" kanto( 3 ) = "埼玉県" kanto( 4 ) = "千葉県" kanto( 5 ) = "東京都" kanto( 6 ) = "神奈川県" For Each member In kanto MsgBox "★" & member & "★" Next End Sub |
・Do…Loopステートメント
繰り返し処理を行うステートメント。ある条件を満たすまで、あるいは満たさなくなるまで繰り返し処理を行いたい場合に用いられる。
例)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Sub doloopsample() Dim i As Integer Dim target As Integer i = 1 target = 400 Do While i < target i = i * 2 MsgBox i Loop End Sub |
・Exitステートメント
処理を途中で止める目的で使用される。Ifステートメントと組み合わせて、ある条件と一致したら処理をやめる、のような操作を実現可能。
例)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Sub exitsample() Dim i As Long Dim result As Long result = 1 For i = 1 To 10 result = result * i If result > 30 Then Exit For End If MsgBox result Next End Sub |
まとめ
今回はステートメントの導入部分をお見せしました。未だ記述内容を理解できなくても大丈夫です。次回からステートメントの詳細をひとつずつ見ていきます。