VBAでよく使われるステートメントを一挙紹介!

ステートメントとは、プログラムの中で実行される最小の単位のことを指します。つまり、1つの処理をするための命令文のことです。
プログラムを書く際には、適切なステートメントを組み合わせて、目的の処理を実現するようにします。

VBAでよく使われるステートメントは、初心者にとって非常に重要な概念です。
以下は、VBA初心者が知っておくべき代表的なステートメントの一覧です。

代表的なステートメントの一覧

  1. Dimステートメント:変数の宣言に使用される。
  2. Ifステートメント:条件分岐に使用される。
  3. Forステートメント:繰り返し処理に使用される。
  4. Do Whileステートメント:条件を満たしている間、繰り返し処理に使用される。
  5. Select Caseステートメント:複数の条件分岐に使用される。
  6. Withステートメント:特定のオブジェクトを指定して処理を実行する。

これらのステートメントは、VBAプログラムの基礎となるものであり、VBA開発において頻繁に使用されます。また、ステートメントの理解は、より高度なプログラムを作成するための基盤となります。

次に、それぞれのステートメントの使い方や具体的な例を説明します。

Dimステートメント

Dimステートメントは、VBAにおいて変数を宣言するために使用されます。変数は、プログラムにおいて情報を一時的に格納するために使われるもので、その変数がどの種類のデータを格納できるかを宣言する必要があります。

例えば、以下のように書くことで、整数型の変数「i」を宣言することができます。

このようにすることで、「i」という名前の変数が、整数型の値を格納するために使用されることが明確になります。

また、同時に複数の変数を宣言することもできます。例えば、以下のように書くことで、整数型の変数「i」と「j」を宣言することができます。

Dimステートメントは、変数の宣言だけでなく、変数に初期値を設定することもできます。
例えば、以下のように書くことで、整数型の変数「i」を宣言し、初期値を「1」と設定することができます。

最後に、変数はVBAプログラムにおいて非常に重要な役割を担っています。
変数を宣言することで、プログラムにおいて情報を格納し、処理を行うことができるようになります。

Ifステートメント

Ifステートメントは、条件に基づいてコードの実行を分岐させるために使用される、VBAにおける基本的な制御構造の1つです。
Ifステートメントを使用することで、特定の条件が満たされた場合に実行する処理と、条件が満たされなかった場合に実行する処理を分岐させることができます。

Ifステートメントの基本的な構文は以下のようになります。

上記の構文では、[条件式]には比較演算子や論理演算子などを使用して、条件を表現する式を記述します。[実行する処理]には、条件が真の場合に実行するVBAコードを記述します。Ifステートメントは、条件が偽の場合に実行する処理を指定する「Else」や、複数の条件分岐を行う「ElseIf」ステートメントと併用することができます。

例えば、以下のVBAコードは、変数「num」の値が10未満である場合に「numは10未満です」というメッセージを表示し、それ以外の場合には「numは10以上です」というメッセージを表示するIfステートメントの例です。

このように、Ifステートメントを使うことで、特定の条件が満たされた場合に実行する処理と、条件が満たされなかった場合に実行する処理を柔軟に制御することができます。

Forステートメント

Forステートメントは、指定した回数分、あるいは配列の要素数分だけ繰り返し処理を行うための、VBAにおける基本的な制御構造の1つです。
Forステートメントを使用することで、あらかじめ決められた回数や範囲内で繰り返し処理を行うことができます。
Forステートメントの基本的な構文は以下のようになります。

上記の構文では、「変数」には、繰り返し処理内で使用するための変数名を指定します。「初期値」には、変数の初期値を指定します。「終了値」には、繰り返し処理を終了するための条件式を指定します。「ステップ値」には、変数が増分する値を指定します。ステップ値を省略すると、変数は1ずつ増分されます。

例えば、以下のVBAコードは、変数「i」を1から10まで1ずつ増分させながら、繰り返し処理を行うForステートメントの例です。

このように、Forステートメントを使用することで、決まった回数だけ処理を繰り返すことができます。また、Step値を指定することで、変数の増分を調整することもできます。Forステートメントは、配列の要素を操作する際にもよく使われます。

Do Whileステートメント

Do Whileステートメントは、ある条件が成り立っている限り、繰り返し処理を行うための制御構造の1つです。
条件式が最初からFalseである場合、Do Whileステートメントの中の処理は一度も実行されません。

Do Whileステートメントの基本的な構文は以下のようになります。

上記の構文では、「条件式」には、繰り返し処理を継続するための条件式を指定します。「実行する処理」には、条件式がTrueである限り、繰り返し実行する処理を指定します。ループ処理を終了するためには、ループ内で条件式をFalseにする必要があります。

例えば、以下のVBAコードは、Do Whileステートメントを使用して、変数「i」が10以下の場合に繰り返しメッセージボックスを表示する例です。

このように、Do Whileステートメントを使用することで、条件式がTrueである限り、繰り返し処理を実行することができます。
Do Whileステートメントは、繰り返し回数が決まっていない場合や、繰り返し回数が可変である場合によく使われます。

Select Caseステートメント

Select Caseステートメントは、複数の条件に応じて分岐する際に使用される制御構文の1つです。条件によって分岐する場合、Ifステートメントを使用することもできますが、複数の条件に対して分岐する場合には、Select Caseステートメントを使用する方が効率的です。

Select Caseステートメントの基本的な構文は以下のようになります。

上記の構文では、「対象となる式」には、条件分岐の対象となる式を指定します。「Case」キーワードの後には、条件分岐の条件値を指定します。条件値が「対象となる式」と一致した場合、その条件に対応する「実行する処理」が実行されます。条件値には、整数、文字列、真偽値などを指定することができます。「Case Else」キーワードは、上記の条件に一致しない場合に実行する処理を指定します。

例えば、以下のVBAコードは、Select Caseステートメントを使用して、変数「color」の値に応じてメッセージボックスを表示する例です。

このように、Select Caseステートメントを使用することで、複数の条件に応じて簡潔なコードで分岐処理を実装することができます。

Withステートメント

Withステートメントは、複数のプロパティやメソッドを持つオブジェクトを効率的に操作するための構文です。
Withステートメントを使用することで、同じオブジェクトに対して複数回アクセスする必要がある場合でも、コードを簡潔にすることができます。
Withステートメントの基本的な構文は以下のようになります。

上記の構文では、「オブジェクト」とは、Withステートメントで操作するオブジェクトを指定します。Withステートメント内の各行には、オブジェクトのプロパティやメソッドを操作するコードを記述します。プロパティに値を代入する場合は、プロパティ名の前に「.」を付けて指定します。メソッドを呼び出す場合も同様に、「.」を付けて指定します。

例えば、以下のVBAコードは、Withステートメントを使用して、Worksheetオブジェクトの各種プロパティやメソッドを操作する例です。

この例では、Worksheetオブジェクトを「ws」という変数に代入し、Withステートメントでそのオブジェクトを操作しています。
Withステートメント内で、Rangeプロパティを使用してセル範囲を指定し、Valueプロパティでセルに値を設定したり、Fontプロパティでフォントの設定を行ったりしています。
また、Formulaプロパティを使用して、セルに数式を設定する処理も含まれています。

このように、Withステートメントを使用することで、同じオブジェクトに対して複数回アクセスする必要がある場合でも、コードを簡潔にすることができます。

上記以外にも…

正直、上記のステートメント以外にもステートメントは数多く用意されています。

  • Exitステートメント:ループやサブルーチンから抜け出すために使用されます。
  • On Errorステートメント:エラーが発生した場合の処理を定義するために使用されます。
  • GoToステートメント:特定の行にジャンプするために使用されます。
  • Optionステートメント:VBAの設定を変更するために使用されます。例えば、Option Explicitステートメントを使用すると、未定義の変数を使用しようとするとエラーが発生するように設定できます。
  • Callステートメント:サブルーチンを呼び出すために使用されます。

適切な場面で適切なステートメントを使用することがプログラミングの効率を高める上で重要です。
少しずつ覚えていきましょう。

コメント