ExcelVBAを1から学ぶ! #9 ~ステートメント概要~


はじめに

前回のおさらいと今回やること

前回はユーザー定義型について学習しました。今回は話がガラリと変わって、ステートメントについて学習していきます。

ステートメントの概要

ステートメントとは?

ステートメントとは、VBAにおいて使われる命令のことを指します。色々な種類のステートメントがありますが、ここでは処理を制御するための制御構文として扱われるものを見ていきたいと思います。条件によって処理を変えたり、繰り返し処理を行う際にこの制御構文が使われます。

主な制御構文の種類

以下がよく使用される制御構文です。

・Ifステートメント
条件によって処理を分岐させるステートメント。条件式は真偽値(True or False)が返る形となる。
条件に合致する場合とそうでない場合のような分岐に対して用いられる。

例)


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ステートメント同様、条件によって処理を分岐させるステートメント。処理の分岐条件が簡単でかつ、多方向に分岐するような際にはこちらで記述してあげた方がすっきり書けることが多い。

例)


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ステートメントが用いられる。

例)


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ステートメント
繰り返し処理を行うステートメント。あるグループ内のメンバーひとつひとつに対して繰り返し処理を行いたい場合などに用いられる。

例)


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ステートメント
繰り返し処理を行うステートメント。ある条件を満たすまで、あるいは満たさなくなるまで繰り返し処理を行いたい場合に用いられる。

例)


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ステートメントと組み合わせて、ある条件と一致したら処理をやめる、のような操作を実現可能。

例)


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

まとめ

今回はステートメントの導入部分をお見せしました。未だ記述内容を理解できなくても大丈夫です。次回からステートメントの詳細をひとつずつ見ていきます。

  • このエントリーをはてなブックマークに追加

PAGE TOP