エクセルVBAのEndステートメント
<< エクセルVBAのIE制御に利用したステートメント一覧(VBAのIE制御入門) :前の記事
<< エクセルVBAのプログラムの制御構文(VBAの初心者入門) :前の記事
こちらは、エクセルVBAのEndステートメントの解説になります。
また、ステートメントとは「命令文」と訳されるようにコンピュータに具体的な動作を指定する最小単位のプログラムです。主にマクロの挙動を制御する構文や文法を指します。通常は1行で完結する部分を指しますが、If~Thenなど複数行にまたがる部分を意味することもあります。
目次
- Endステートメントとは
- End Subステートメントのサンプルコード
- End Functionステートメントのサンプルコード
- End Propertyステートメントのサンプルコード
- End Typeステートメントのサンプルコード
- End Ifステートメントのサンプルコード
- End Selectステートメントのサンプルコード
- End Withステートメントのサンプルコード
- Endステートメントのサンプルコード
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 Sub | Subステートメントを終了させます。 | |
End Function | Functionステートメントを終了させます。 | |
End Property | Property Let、Property Get、Property Setプロシージャを終了させます。 | |
End Type | ユーザー定義型の定義(Typeステートメント)を終了させます。 | |
End If | ブロック形式のIf~Then~Elseステートメントを終了させます。 | |
End Select | Select Caseステートメントを終了させます。 | |
End With | Withステートメントを終了させます。 | |
End | プログラムの実行を終了させます。この場合、Endステートメントは必ずしも必要ではありませんが、プロシージャ内の任意の場所に指定できます。 |
End Subステートメントのサンプルコード
Sub sample()
MsgBox "VBA"
End Sub
実行結果
メッセージボックスに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
実行結果
解説
呼び出し先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が表示される。
解説
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
実行結果
解説
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
実行結果
解説
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
実行結果
解説
sampleのSubステートメントには引数の設定はされていません。まず、Withステートメントのオブジェクト名に「Sheets("Sheet1")」を設定しました。これによりオブジェクト名を省略して記述できるようになりました。このように操作したオブジェクトを一度指定するだけで複数のプロパティの設定を行えます。Withステートメントの処理が完了したらEnd Withステートメントを利用してWithステートメントを終了させます。
Endステートメントのサンプルコード
Sub sample()
MsgBox "VBA"
End
MsgBox "入門"
End Sub
実行結果
①メッセージボックスにVBAが表示される。
②「MsgBox "入門"」は実行されない。
解説
sampleのSubステートメントに引数は設定されていません。次にMsgBox関数でメッセージボックスに「VBA」を表示させています。そしてEndステートメントでプログラムを終了させます。これによりこれ以降の処理は実行されないため、「MsgBox "入門"」は処理されずに終了します。
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。