制御構造

If ... Then ... Else ステートメント(条件分岐)

「もし状況がAだったら処理Xを実行し、もし状況がBだったら処理Yを実行する」
このように、状況に応じて処理を選択する手法を条件分岐と呼びます。
条件分岐は、コンピュータプログラミングの最大のポイントの一つと言えます。

If ... Then ... Else 条件が成立したときと、成立しないときで、別の処理を行う
Else if 二つ以上の条件を続けて評価するときに使用する
Select Case ひとつの条件で、複数のパターンへ分岐したいとき使用する

《使い方》

If 条件 Then 条件を満たしたとき(True)の処理

If 条件 Then
  条件を満たしたときのプログラム
Else
  条件が満たされなかったときのプログラム
End If

 

Select Case ステートメント(条件分岐) 

If ステートメントが多くなると、ステートメントが読みづらくなります。 単独の対象条件を繰り返し判断するときは、Select Caseステートメントを使うと、シンプルで読みやすくなります。
Select Case ステートメントは、条件の値によって複数のステートメントブロックのいずれかを実行します。

Select Case 評価する値
  
Case 条件の値1
     処理1
Case 条件の値2
     処理2
       ・
       ・
Case Else
     該当する値がないときの処理

End Select

《例》 次の例では、MsgBox関数の戻り値を使って、処理を選択しています。

《実行結果》

 

For Each...Next (繰り返し) 

For Each...Nextステートメントは、配列やコレクションの要素に対して、一連のステートメントを繰り返し実行するフロー制御ステートメントです。
あるオブジェクトコレクションに含まれるすべてのオブジェクトについて、同じ処理を繰り返すときに利用します。

《基本構文》

For Each 要素 In 対象
    処理
Next 要素

※要素=オブジェクト変数、Variant型の変数   対象=コレクション名、配列名

《例》 次の例では、配列要素の合計をメッセージボックスに表示します。

《例》 次の例では、データベースウィンドウのテーブルタブにあるテーブル名を、イミディエイトウィンドウに表示します。

 

For...Nextステートメント(繰り返し) 

同一処理を何度も繰り返すことをループと言います。ループには、指定した回数だけを繰り返す方法や、ある特定の状況が発生するまで繰り返す方法などがあります。
For 〜 Next ステートメントは、あらかじめ処理回数を決めておくループの方法です。
処理を途中で中止しループを抜ける場合は、Exit Forを使用します。
[Step 加算値] を省略すると Step 1 と同じ処理になります。
変数が、最終値を超えるとループを抜けます。

《基本構文》

For カウンタ変数 = 開始値 To 終了値 Step 加算値

     処理

Next カウンタ変数

《例》次の例では、i の値を5回繰り返して出力しています。


Do 〜 Loop ステートメント(繰り返し) 

ループの前に条件を判定する 

《Do While〜Loop のサンプル》

次の例では、i の値が 5 以下の間処理を繰り返しています。

《Do Until 〜 Loop のサンプル》

次の例では、ヌルが入力されるまで繰り返します。空白のまま[「OK」をクリックすると終わります。
この場合、変数に初期値を入れておかないと、ループに入る前に終わります。

 

ループの後で条件を判定する 

《Do 〜 Loop Until のサンプル》

前述のプログラムでは、初期値を入れておかないと1回も実行しないまま終了しますが、次の例では1回は必ず実行します。

《Do 〜 Loop While のサンプル》

次の例では、空白でない間処理を繰り返しますが、判定条件がループの後にありますので、1回は必ず処理を実行します。

 

再指定の省略(With) 

Withステートメントを使うと、同じオブジェクトやユーザー定義型を複数の行で参照する場合、オブジェクトなどの再指定を省略することができます。
指定したオブジェクト姪を何度も記述することなく、ドットに続けてメソッドやプロパティを呼び出すことができます。

《基本構文》

With 対象となるオブジェクトなど

   .対象となるオブジェクトへの参照

End With

次の例では、Withステートメントを使って、プロジェクトファイルの情報を表示しています。