8.ステートメント

今回は、ステートメントについて説明します。

ステートメントとは

ステートメントとは、広義では1つの処理文のことを指します。
VBAでは、1行1文で記述するルールがあるので、この1行の文が1ステートメントとなります。

一方、特定の処理を行う構文に対しても、ステートメントという表現をします。

例えば、変数を定義する場合はDimステートメント、プロシージャの定義はSubステートメント、後にご紹介する条件分岐や反復処理は、ifステートメントやForNextステートメントを使用します。

ステートメントという言い方は、いろいろな場面で出てきますが、前後の文脈からどちらの意味で使われているか解釈する必要があります。

ここでは、後者の特定の処理に関するステートメントをいくつかご紹介します。

Withステートメント

○構文
With オブジェクト
  .プロパティ/メソッド
End With

○処理
Withステートメント内では、With句に指定したオブジェクトの記述を省略することができます。
同一のオブジェクトに対して複数の処理を行う場合に、記述の簡略化を図ることができます。

注意点として、省略できるのは、オブジェクトの記述のみなので、オブジェクトとプロパティ/メソッドをつなぐ、.(ピリオド)は省略することができません。

慣例的に、Withステートメント内ではインデントを付けます。

また、Withステートメント内に、別のWithステートメントを記述する階層的な使い方をすることもできます。
Withステートメントが階層になっている場合は、最後のWithステートメントが優先されます。

ただし、Withステートメント内にまったく別のオブジェクトのWithステートメントがあると、非常にわかりづらいコードになってしまうので、階層的なWithステートメントを記述する場合は、親オブジェクトと子オブジェクトの関係がある場合に限定した方がわかりやすいです。

Sub Withステートメント()
    
    'With シート
    With ActiveSheet
        .Name = "Sheet1"
        .Cells(1, 1).Value = 1
        .Cells(1, 2).Value = 2
    End With
    
    'Withの階層
    With ActiveSheet
        With .Cells(1, 1)
            .Value = 1
        End With
        .Cells(1, 2).Value = 2
    End With
        
End Sub

Endステートメント

○構文
Sub ()
 End
End Sub

○処理
End Subが実行される前でも、Endステートメントが実行されたタイミングで処理を終了することができます。Subプロシージャを例で示しましたが、他のプロシージャでも同様です。

特に、条件分岐と合わせて使用することが多く、特定の条件になった場合に、即座に処理を終了するときなどに使用します。

Sub Endステートメント()
    
    Dim var As Variant
     
    var = InputBox("値を入力してください")
    
    'InputBoxに数値を入力したら処理を終了
  If IsNumeric(var) = True Then  'IsNumericは引数が数値の場合Trueを返す
        End
    Else
        MsgBox "入力したのは" & var & "です"
    End If
    
End Sub

コメント