正式にVBAコードを使用する前に、Excel VBAの基本概念を理解することが、VBAコードを使いこなせることに役に立ちます。
VBAの概念と言えば、10つの記事でも言い切れません。そのため、この記事は最も基本概念のみ解説します。これらの基本概念は、今後のチュートリアルにも繰り返して使用され、VBAの活用に必須の基礎です。他の部分については学習の深化につれ、解説していきます。
目次
Excel VBA基本原理
上記の図を簡単に言いますと、Excelはオブジェクトであり、多くの属性とサブオブジェクトが含まれますVBAはこれらのオブジェクトを利用してさまざまな効果を実現できるツールです。 たとえば、ExcelにはセルオブジェクトであるRangeオブジェクトが含まれており、VBAでセルオブジェクトの塗りつぶしの色のプロパティが変更できます。 コードは次のとおりです。
'セルA1の塗りつぶし色は49407の色に設定します。
Range("A1").Interior.Color = 49407
上記のコードを理解していなくても構いません。ここでは、コードを使用してExcelにあるオブジェクトとVBAの間の関係を簡単に解説します。
- Range(“A1”)、Interior、Colorなど単語は、Excelに属するオブジェクトと属性です。
- オブジェクトと属性の操作は、VBA言語を介した次第に実現されます。つまり、上記はVBAコードです。 真ん中の等号(=)はVBA言語にある代入と比較の記号であり、セルの塗りつぶしの色を変更する決め所です。
上記はExcel VBAの基本原理です。 次には、VBAのプログラミング言語とExcelのオブジェクトに関わる基本概念を解説します。
VBAのプログラミング言語の基本概念
コメント
コメントは、実行されないコードです。 コメントはほとんどのプログラミング言語にある機能であり、VBAにもあります。
VBAのコメントは、英字の一重引用符( ‘)で始まり、その後はコメントの内容です。一重引用符で始まる部分は実行されません。
'これはコメントです
コメントは、字面の通りに、コードを説明するために使用されます。 コードを入力しながら、コードをコメントすることは良い習慣です。これは、自分自身や他の人が既存のコードをよく理解することに役立ちます。
コメントの使用方法には、今後がもっと詳しいチュートリアルに解説し、よく理解できます。
変数
変数はデータを保存する表現方法の一つです。 プログラムの最初に、変数を宣言し、データ型(数値、テキスト、論理値など)を指定して、変数に値を割り当てることができます。 プログラムの他のところにこの変数を使用して、保存されている値が演算できます。
次のコードを例にします。
'データ型のテキストの変数を宣言します
Dim val As String
'val変数に値を割り当てます。"Hello World"
val = "Hello World"
'セルA1のval変数に保存されているデータを書き込みます
Range("A1").Value = val
ご覧のとおり、val変数で“Hello World”テキストを保存すれば、プログラムにはval変数で表すことができます。この部分については、次の章「変数、データ型、および演算子」で詳しく説明します。
プログラムの構造
プログラム構造は、プログラムの実行方法を示しています。VBAがさまざまな複雑なデータ計算を実現できるのは、複数のコード構造が存在するためです。 常見のコード構造は次の3つになります。
- 順次構造
- 選択構造
- 反復構造
順次構造:名字が示すように、プログラムは順次に実行されます。 VBAでは、上から下に1行ずつ実行されます。
選択構造:コードの指定された部分は、特定の条件に従って選択的に実行されます。 つまり、条件が[True]の場合、指定されたコードが実行されます。それ以外の場合、コードのこの部分はスキップされ、実行されません。
反復構造:コードの指定された部分は、指定された回数によってループで実行されます。 これが、VBAが効率的である理由の1つで、同じ操作を任意の数で自動的に繰り返すことができます。
プログラム構造については、「プログラム構造」の章で詳しく解説しています。
プロシージャと関数
プロシージャまたは関数には複数行のコードが含まれ、コードを整理する2つの方法です。通常、一つのプロシージャまたは関数には、一つの機能を実現するための関連コードが含まれています。プロシージャまたは関数が複数の機能を実現したい場合は、コードを複数のプロシージャまたは関数に分かれることをお勧めします。
プロシージャと関数はどちらもコードを実行できます。主な区別は、コードが実行した後、関数は値を返すことができますが、プロシージャは返すことができないです。 詳細は「プロシージャと関数」の章で解説します。
配列
配列は同じデータ型の集合を表し、VBAの最も重要な概念の1つです。次のコードを例にします。
'配列を作成する
Dim Val(1 to 4) As String
'配列の要素に値を割り当てる
Val(1) = "Excel"
Val(2) = "Word"
Val(3) = "PowerPoint"
Val(4) = "Outlook"
上記のコードは、長さが4でテキストのデータ型の配列を作成します。 配列は番号を使用して対応の位置に値を割り当てます。
VBAが使用の際には、セルのデータを配列に変換する処理がよくあります。詳細は「配列」の章で解説します。
オブジェクト
オブジェクトはものであり、こと、物、オブジェクト、概念、名詞である可能性があります。 オブジェクトには、静的情報の属性やオブジェクトを操作する方法が含まれています。
生活中にあるオブジェクトから車を例にします。 車ナンバー、燃料量、走行距離などは車の属性であり、運転する、給油する、及びナンバーの交換は車の方法です。
VBAにも似てます。 ワークシート(Worksheet)をオブジェクトと言ば、名前、ラベルなどが属性で、追加や削除などが方法です。Excel VBAのオブジェクトについては、「Excel VBAオブジェクトモデル」の章で詳しく解説します。
Excel VBA の基本概念
Excel オブジェクトモデル
上記のオブジェクトでは、ワークシート(Worksheet)オブジェクトについて解説しました。 実際、Excelもオブジェクトであり、ワークシートオブジェクトはApplicationで表され、Excelで最大のオブジェクトです。 Applicationオブジェクトにはワークブック(Workbook)オブジェクトが含まれ、ワークブックオブジェクトにはワークシート(Worksheet)オブジェクトが含まれ、ワークシート(Worksheet)オブジェクトには他のサブオブジェクトが含まれます。
上記では、Excel VBAオブジェクトモデルについて解説しました。つまり、ツリー構造で、複数のオブジェクトが論理の階層によってまとめられています。
詳細については、「Excel VBAオブジェクトモデル」の章で詳しく解説しています。
常用のExcelオブジェクト
- Applicationオブジェクト。Excelアプリケーションを表します。
- Workbookオブジェクト。ワークブックオブジェクトを表します。
- Worksheetオブジェクト。ワークシートオブジェクトを表します。
- Rangeオブジェクト。セルの範囲オブジェクトを表します。
モジュール
モジュールは、1つ以上のプロシージャまたは関数を含む内部コンポーネントです。 ワークブックに含まれるモジュールの数量に制限はなく、モジュールに含まれるプロシージャまたは関数の数量にも制限はありません。 モジュールは、プロシージャまたは関数を保存するために使われます。通常、これらのプロシージャまたは関数はワークブック全体に適用されます。
複数のプロシージャと関数を異なるモジュールに合理的に配置することにより、全体のVBAコードをもっと明確にし、読みやすく、理解しやすくなります。
ユーザーフォーム
ユーザーフォームは、VBAコードがユーザーと対話するためのユーザー向けのインターフェイスです。 Excel VBAは基本的なフォームコントロールを提供し、複雑なユーザーインターフェイスを作成できます。例えば、Excelでセルの書式を設定するためのウィンドウインターフェイスは1つのユーザーフォームです。
コメントを残す