エクセルVBAのEndステートメント

<< エクセルVBAのIE制御に利用したステートメント一覧(VBAのIE制御入門) :前の記事

<< エクセルVBAのプログラムの制御構文(VBAの初心者入門) :前の記事

こちらは、エクセルVBAEndステートメントの解説になります。

また、ステートメントとは「命令文」と訳されるようにコンピュータに具体的な動作を指定する最小単位のプログラムです。主にマクロの挙動を制御する構文や文法を指します。通常は1行で完結する部分を指しますが、If~Thenなど複数行にまたがる部分を意味することもあります。

目次

Endステートメントとは

Endステートメントは、プロシージャやブロック(一連のステートメントの集まり) を終了させるステートメントです。Endステートメントを実行すると、すべてのモジュール内のすべてのモジュールレベル変数および静的変数が初期化されます。

値を保持したままチェックを行う場合は、Endステートメントを利用すると変数の値が初期化されてしまいますので、代わりにStopステートメントを利用するようにしましょう。こちらを利用することにより、変数の値を保持したまま、実行を再開できます。

Sub プロシージャ名()
 処理に内容
End Sub

Function プロシージャ名()
 処理に内容
End Function

Property プロシージャ名()
 処理に内容
End Property

Type ユーザー定義型名
 要素1(変数・定数名) As データ型
 要素2(変数・定数名) As データ型
End Type

If 条件式 Then
 条件式が真(True)の場合に実行される処理
・・・
End If

Select Case 判断条件の対象
 Case 条件1
  条件1が真(True)の場合に実行される処理
 Case 条件2
  条件2が真(True)の場合に実行される処理
・・・
End Select

With オブジェクト名・ユーザー定義型名
 .プロパティ名
 .メソッド名
・・・
End With

End

構文End Sub
End Function
End Property
End Type
End If
End Select
End With
End
ステートメント説明
End SubSubステートメントを終了させます。
End FunctionFunctionステートメントを終了させます。
End PropertyProperty Let、Property Get、Property Setプロシージャを終了させます。
End Typeユーザー定義型の定義(Typeステートメント)を終了させます。
End Ifブロック形式のIf~Then~Elseステートメントを終了させます。
End SelectSelect Caseステートメントを終了させます。
End WithWithステートメントを終了させます。
Endプログラムの実行を終了させます。この場合、Endステートメントは必ずしも必要ではありませんが、プロシージャ内の任意の場所に指定できます。

End Subステートメントのサンプルコード


Sub sample()

    MsgBox "VBA"

End Sub

実行結果

メッセージボックスにVBAが表示される。

メッセージボックスにVBAを表示

解説

sampleのSubステートメントに引数は設定されていません。次にMsgBox関数でメッセージボックスに「VBA」を表示させています。最後にEnd Subステートメントを利用してsampleのSubプロシージャを終了させます。

End Functionステートメントのサンプルコード


Sub sample()

    Dim n As Integer
    
    n = 5
    
    MsgBox "戻り値:" & addition(n)

End Sub

Function addition(n As Integer) As Integer

    addition = n + 10
    
End Function

実行結果

Functionプロシージャの結果

解説

呼び出し先sampleプロシージャには引数の設定していませんが、呼び出し元additionプロシージャのFunctionステートメントには、変数nが整数型(Integer)で設定されています。次に、Dimステートメントを利用して変数nに整数型(Integer)を宣言し、変数nには「5」を代入します。

そして、additionプロシージャを呼び出し、引数nに「5」を設定し実行しています。additionプロシージャにn=5を参照渡しすると、変数additionは5+10で「15」となるため、こちらが戻り値として返されます。その際にEnd Functionステートメントを利用してadditionのFunctionプロシージャを終了させます。戻り値を取得したら、MsgBox関数でメッセージボックスを表示させます。

End Propertyステートメントのサンプルコード


Property sample()

    MsgBox "VBA"

End Property

実行結果

メッセージボックスにVBAが表示される。

メッセージボックスにVBAを表示

解説

sampleのPropertyステートメントに引数は設定されていません。次にMsgBox関数でメッセージボックスに「VBA」を表示させています。最後にEnd Propertyステートメントを利用してsampleのPropertyプロシージャを終了させます。

End Typeステートメントのサンプルコード


Type Personal
    Name As String
    Age As Byte
End Type

Sub sample()

    Dim perA As Personal
    
    perA.Name = "鈴木"
    perA.Age = 20
    
    MsgBox "名前:" & perA.Name & ", 年齢:" & perA.Age
    
End Sub

実行結果

ユーザー定義型

解説

こちらでは、「名前」と「年齢」のユーザー定義型を作成しています。
ユーザー定義型名はPersonalで、名前の変数Nameに文字列型(String)、年齢の変数Ageにバイト型(Byte)を設定しています。ユーザー定義が完了したらEnd Typeステートメントを利用してPersonalのTypeステートメントを終了させます。

End Ifステートメントのサンプルコード


Sub sample()

    Dim a As Integer
    
    a = 10

    If a > 5 Then
    
        MsgBox "変数aは5より大きい"

    Else
    
        MsgBox "変数aは5より小さい"
    
    End If

End Sub

実行結果

If文を利用した結果

解説

sampleのSubステートメントには引数の設定はされていません。まず、Dimステートメントを利用して変数aに整数型(Integer)を宣言し「10」を代入します。次にIf文の条件式を確認すると比較演算子を利用して「変数aが5より大きい」場合に真(True)を返す設定にしています。

今回は変数aに「10」を代入しており条件式に当てはまるため、If以下の「MsgBox "変数aは5より大きい"」が実行されました。If文のチェックと処理が完了したらEnd Ifステートメントを利用してIf~Then~Elseステートメントを終了させます。

End Selectステートメントのサンプルコード


Sub sample()

    Dim a As Integer
    
    a = 10

    Select Case a
    
        Case 5
        
            MsgBox "変数aは5です。"
            
        Case 6
        
            MsgBox "変数aは6です。"
    
        Case 7
        
            MsgBox "変数aは7です。"
            
        Case 8
        
            MsgBox "変数aは8です。"
    
        Case 9
        
            MsgBox "変数aは9です。"
            
        Case 10
        
            MsgBox "変数aは10です。"
  
        Case Else
        
            MsgBox "変数aは5~10ではありません。"
    
    End Select

End Sub

実行結果

基本形のSelect Case文の結果

解説

sampleのSubステートメントには引数の設定はされていません。まず、Dimステートメントを利用して変数aに整数型(Integer)を宣言し「10」を代入します。次にSelect Case文の条件対象として変数aが設定されています。そしてCase節にはそれぞれ「5~10」の値が設定されています。

今回は変数aは「10」が代入されていますので、該当するのは6つ目の「Case 10」に当てはまるため、それ以下の「MsgBox "変数aは10です。"」が実行されました。途中で条件が一致した場合は、指定された処理を実行した後にEnd Selectステートメントを利用してSelect Caseステートメントを終了させます。

End Withステートメントのサンプルコード


Sub sample()

    With Sheets("Sheet1")
    
        .Range("A1").Value = "エクセル"
        .Range("A2").Value = "VBA"
        .Range("A3").Value = "入門"
    
    End With
    
End Sub

実行結果

エクセルVBAのWithステートメントの結果

解説

sampleのSubステートメントには引数の設定はされていません。まず、Withステートメントのオブジェクト名に「Sheets("Sheet1")」を設定しました。これによりオブジェクト名を省略して記述できるようになりました。このように操作したオブジェクトを一度指定するだけで複数のプロパティの設定を行えます。Withステートメントの処理が完了したらEnd Withステートメントを利用してWithステートメントを終了させます。

Endステートメントのサンプルコード


Sub sample()

    MsgBox "VBA"

    End

    MsgBox "入門"

End Sub

実行結果

①メッセージボックスにVBAが表示される。
②「MsgBox "入門"」は実行されない。

メッセージボックスにVBAを表示

解説

sampleのSubステートメントに引数は設定されていません。次にMsgBox関数でメッセージボックスに「VBA」を表示させています。そしてEndステートメントプログラムを終了させます。これによりこれ以降の処理は実行されないため、「MsgBox "入門"」は処理されずに終了します。

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

近田 伸矢, 植木 悠二, 上田 寛

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

  • このエントリーをはてなブックマークに追加
ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。