VBAプログラム構造(初級)

この記事からVBAステートメントのもう1つの重要な概念であるプログラム構造を説明します。

前篇で説明した変数データ型および演算子の概念は、VBAの「静的」部分です。 相対的に、プログラム構造はVBAの「動的」部分です。 プログラムの構造を学んだ次第に、実際に実行できるVBAプログラムを作成できます。

この記事では、最初にプログラム構造の最も常用の部分を説明します。詳しく勉強する前に基本的な概念があります。 次のチュートリアルでは、各プログラム構造について詳しく説明します。

プログラム構造の例

この記事では、まず次のコードを使用してさまざまなプログラム構造を紹介します。ご覧ください。

Sub MyCode()

'反復変数と変数が空かどうかを宣言する
Dim i As Integer
Dim isBlank As Boolean

'セル範囲A2-A10を反復する
For i = 2 To 10

'セルが空かどうかの結果を保存する
isBlank = Cells(i, 1).Value = ""

'空の場合は、上のセルの値を今のセルに入力する
If isBlank Then
Cells(i, 1) = Cells(i - 1, 1)
End If

Next i

End Sub

上記のコードを実行した後、セルA2:A10の範囲で、各セルが順番に空であるかどうかを判別し、空の場合は、前のセルの値を入力します。

プロシージャ

プロシージャは、プログラムを実行するVBAの最小構造です。 1行または複数行のコードを実行することはできません。実行するには、コードをプロシージャに配置する必要があります。

この例では、Subプロシージャ名は()で始まり、End Subで終わるのはプロシージャの枠組であり、コードはその間に配置する必要があります。

Sub MyCode()
End Sub

プログラムのステートメント

ステートメントとは、完全なる意味を持っている一行のコードです。

例えば、例の1行目では、変数の宣言は1つのステートメントです。 これは整数型の変数が宣言されていることを意味します。 同様に、2行目、3行目、および他の行は全部ステートメントです。 VBAのプロシージャは、このようなステートメントで構成されています。

Dim i As Integer
Dim isBlank As Boolean

通常、改行またはマージシンボルを使用しない限り、1つの行はステートメントです。詳細については「VBA演算子(初級)」をご覧ください。

Excel VBAオブジェクト

VBAを学ぶのはExcelの操作に熟練し、いくつかの特定の目標を達成ためです。 その中で、Excelの操作はExcel VBAオブジェクトによって行われます。

前例では、Cells()はセルを表し、Excel VBAオブジェクトであり、行番号と列番号を提供し、セルを指定します。

プログラムの制御構造

次は、プログラムの構成に一番面白くて大切な部分であるプログラムの制御構造です。 ほとんどのプログラミング言語には、順次構造、反復構造、選択構造の3つの基本的なプログラムの制御構造があります。簡単から複雑な算法がこれらの3つの基本構造を組み合わせることで完成できます。

順次構造

まずは順次構造です。順次構造とは、サブプログラムを順次に実行します。VBAの順序は、上から下、左から右です。

この例では、まず2つの宣言のステートメントを実行し、次に反復構造を実行します。 プログラムにネストされたプロシージャがある場合は、ネストされたプロシージャも順番に指定されることに注意すべきです。

反復構造

2番目の基本構造は反復構造です。反復構造をコードの反復に使用する場合は、指定された反復回数に従って、サブプログラムを繰り返し実行します。

この例では、ForとNextiの間のコードは反復コードです。

VBAには多くの反復構造がありますが、前例はFor反復構造です。 For反復構造では、1行目は反復の回数を指定し、最後の行は次の反復の開始を示します。

'反復開始
For i = 2 To 10

'反復のコード
Next i

選択構造

最後の1つの基本構造は選択構造です。 簡単に言えば、この構造では、条件式が真(True)の場合だけ、選択構造の主体部分が実行され、それ以外の場合はスキップされます。

例のコードでは、Ifで始まりやEnd If で終わりの形式が常見の選択構造です。 1行目では、isBlank変数がtrueであるかどうかを判断されます。真の場合、選択構造の主体部分が実行され、そうではない場合はスキップされます。

'空の場合は、上のセルの値を今のセルに入力する
If isBlank Then
Cells(i, 1) = Cells(i - 1, 1)
End If

注釈

通常、コードが書かれた後、完璧ではありません。実際の使用中に最新の条件を満たすため、変更する必要があるかもしれません。長い間に開いていなければ、コードの意味が分からない場合もあります。自分ならすぐにコードの意味を思い出すかもしれませんが、他人には理解しにくいです。この時、注釈が必要です。

注釈はコードの説明であり、コードの操作には影響しません。 VBAの注釈のステートメントは、英語の一重引用符「’」で始まり、その後に説明が必要な内容を入力します。

注釈はコードを理解しやすくなります。最初から注釈を書く習慣を身につけることをお勧めします。

実行

次には、実際に例のコードを実行して、その効果を見てください。

ローデータ

結果

まとめ

これで、基本的なVBAプログラムを勉強しました。 実行できる最小単位はVBAプロシージャです。VBAプロシージャは1つまたは1つ以上のステートメントで構成され、各ステートメントは完全な意味を表します。 VBAは順次構造で実行され、反復構造と選択構造の場合には、提供された引数に従って繰り返し実行され、または特定のコードをスキップします。

このチュートリアルの次の部分では、上記の各部分を詳細に説明します。この章の勉強が完了した後、完全な実行可能のVBAプログラムを作成できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です