| 「VBAトップへ」 | |
| 6 プログラム制御文 | |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
1.If〜ElseIfステートメント 条件により処理を分岐させたい場合は、If〜ElseIfステートメントを使用します。Ifは、"If 条件式 Then"の形式で条件を調べて、 条件式に合致(式を評価した結果がtrueであるとき)だけその次のステートメントを実行します。 条件がtrueでないときは、次の次の条件式の条件を調べます。 条件式で使われている比較演算子には、以下のものあります。
以下の例ではインプットボックスを使って入力された文字により処理を分岐させた例です。 条件式では論理演算子を使用することができます。
以下の例では論理演算子を使用して処理を分岐させています。 |
|
2.Select
Case〜ステートメント
複数の条件により処理を分岐させたい場合はSelect Caseステートメントを使用します。 "Select Case 変数"の形式で式を評価し、Case以下の条件に合致(式を評価した結果がtrueであるとき)だけその次の文を実行します。条件がtrueでないときは、次の次の条件を調べます。 どのCase以下の条件にも当てはまらない場合はCase Else以下の文を実行します。 以下の例では、インプットボックスに入力した文字により処理を分岐させた例です。 比較演算子を使用する場合はCase Is以下に比較条件を記述します。 |
|
3.For〜Nextステートメント
条件により処理を繰り返したい場合はFor〜Nextステートメントを使用します。 下記の例では、まず変数 i に 1 が代入され、次に i が10以上かどうかを評価し、セルに値を代入し、次に i の値を1つ加算し、 もう一度 i が10以上かどうかを評価し、セルに値を代入します。この処理を i が10以上になるまで繰り返します。
For〜Next文ではデフォルトでは、カウンタ変数に 1 が加算されますが、"STEP"を指定しカウンタ変数に加算される数値を指定することができます。 下記の例では、まず変数 i に 1 が代入され、次に i が10以上かどうかを評価し、セルに値を代入し、次に i の値を 2 つ加算し、 もう一度 i が10以上かどうかを評価し、セルに値を代入します。この処理を i が10以上になるまで繰り返します |
|
4.Do〜Loopステートメント 条件により処理を繰り返したい場合はDo〜Loopステートメントを使用します。また、Do〜Loopステートメント には条件を指定する方法としてWhile と Untilを使用する方法があります。 >>Whileを使用する場合While〜には"While 条件式"の形式で条件を指定します。条件式がtrueの間、処理が実行されます。 従って、通常は処理の中でWhile文の条件式がfalseになるようにしたり、 繰り返しを中断するような文を記述します。そうでないとwhile文は処理を永遠にし続けてしまうからです。 "While 条件式"は記述位置には2つの形式があり、記述位置により処理内容が異なってきます。 Whileの位置を前にした場合、条件式を満たしているのかを判断してから 繰り返す処理を実行します。 下記の例では、まず初期値として変数 i に 1 が代入しておき、次に i が11以下かどうかを評価し、セルに値を代入し、次に i の値を1つ加算し、 もう一度 i が11以下かどうかを評価し、セルに値を代入します。この処理を i が10以上になるまで繰り返します。 これに対してWhileの位置を後ろにした場合、繰り返す処理を実行してから 条件式を満たしているか判断します。つまりどのような条件でも1回は繰り返す処理 を実行します。 下記の例では、まず初期値として変数 i に 10 が代入しておき、セルに値を代入し、次に i の値を1つ加算し、 i が11以下かどうかを評価します。つまりWhile 条件式を評価する前に処理を 1回実行しています。i の値は11なので 繰り返す処理を実行せずに終了します。
>>Untilを使用する場合Until〜には"Until 条件式"の形式で条件を指定します。条件式がtrueの間、処理が実行されます。 従って、通常は処理の中でUntil文の条件式がfalseになるようにしたり、 繰り返しを中断するような文を記述します。そうでないとUntil文は処理を永遠にし続けてしまうからです。 "Until 条件式"の記述には2つの形式があり、記述位置により処理内容が異なってきます。 Untilの位置を前にした場合、条件を満たしているのかを判断してから 繰り返す処理を実行します。 下記の例では、まず初期値として変数 i に 1 が代入しておき、次に i が11以下かどうかを評価し、セルに値を代入し、次に i の値を1つ加算し、 もう一度 i が11かどうかを評価し、セルに値を代入します。この処理を i が11になるまで繰り返します。 これに対してUntilの位置を後ろにした場合、繰り返す処理を実行してから 条件式を満たしているか判断します。つまりどのような条件でも1回は繰り返す処理 を実行します。 下記の例では、まず初期値として変数 i に 10 が代入しておき、セルに値を代入し、次に i の値を1つ加算し、 i が11かどうかを評価します。つまりUntil 条件式を評価する前に処理を 1回実行しています。i の値は11なので 繰り返す処理を実行せずに終了します。 |
|
5.With〜End Withステートメント 同じオブジェクトに対して複数の処理を実行する方法としてWithステートメントを使用する方法があります。 以下の例はSheet1をアクティブにし、セルの複数のプロパティに値をセットしています。 |
|
6.Exitステートメント 実行中の処理を途中で抜ける場合Exitステートメントを使用します。 Do〜Loopステートメントを処理途中で抜け次のステートメントに制御を移します。 以下の例では変数iの値が10になったときにDo〜Loopを抜けます。 For〜Nextステートメントを処理途中で抜け次のステートメントに制御を移します。 Subプロシージャを処理途中で抜け、制御はSub プロシージャを呼び出した次のステートメントに制御を移します。 Functionプロシージャを処理途中で抜け、制御はFunction プロシージャを呼び出した次のステートメントに制御を移します。
|
|
7.GoToステートメント プロシージャ内で処理を分岐させたい場合にはGoToステートメントを使用することができます。 ただし、GoToステートメントを多用するとプログラムが分かりにくくなるのでなるべく使用しない 方が良いでしょう。 |
|
8.On Errorステートメント
プロシージャ内でエラーが発生した場合のプログラム制御には、On Errorステートメントを使用し Gotoステートメントによりエラー処理ルーチンにプログラム制御を移します。 エラーには実行時エラーと構文エラーとがあり、 実行時エラーとはシステムで処理できない動作を実行しようとした場合に発生するエラーであり、 構文エラーとは文法上の規則に違反した場合に発生するエラーで、プログラム実行前のコンパイル時に発生します。 エラーはErrオブジェクトを使用することにより、そのエラー内容を知ることができます。
エラーが発生した場合プログラムが中断しますが、 もし、プログラムを中断したくない場合はResume Nextステートメントを使用します。 Resume Nextステートメントを使用するとエラーが発生した次のステートメントから プログラムが継続されます。 以下は、構文エラーが発生した場合のプログラム制御の簡単な例です。 |