トップ > スキル : アプリケーション > VBA for Excel > 応用編(VBAの基礎知識1)

VBA_EXCEL

VBAの基礎知識

VBAの基本的な構文などが理解できたうえで、実践的なVBAコードの記述を覚えてみましょう。Excelにも備わっているVBAというプログラミング言語を駆使し、複雑な操作を処理できるようになれば、表計算ソフトが効率的なものになります。ここでは、VBAの実践編としてさまざまな操作の活用を主に説明していきます。また、ユーザーフォームを利用して、効率よく入力できるように工夫してみます。まず、最初にVBAで使われる用語について、簡単に述べていきます。

VBE(Visual Basic Editor)

VBEは、VBAを操作してプログラム作成、修正などを行うためのソフトウェアです。このVBEの画面でプログラムを記述していきます。VBEの起動は、ALT+F11で実行します。

VBE画面
プロジェクトエクスプローラ
開いているブックのオブジェクトを「プロジェクト」というまとまりで管理し、その構成を表示する画面。操作はWindowsのエクスプローラと同様に階層構造になっています。[+]ボタンをクリックすると、どのような要素(オブジェクト)があるか見られます。目的のオブジェクトをダブルクリックすると、プログラムコードを記述するためのコードウィンドウが呼び出されます。例えば、Module1をクリックすると、作成されたプロシージャが表示されます。モジュールとはいわば複数のプロシージャを入れる箱のようなものです。
プロパティウィンドウ
プロジェクトエクスプローラで選択されているオブジェクト名や設定項目が表示されます。設定項目を直接入力することで変更は可能となります。また、ユーザーフォームを作成するときによく使われます。
イミディエイトウィンドウ
コードウィンドウで記述したプログラムの処理結果を表示するウィンドウです。プログラムを作成している途中で、正確な処理ができているかどうかを確認できます。
コードウィンドウ
VBAのプログラムコードを参照したり、編集したりする画面です。コードの記述は、テキストエディタとほぼ同じですが、先頭に「′」をつけた記述はプログラムコードではないとみなされ、緑色などで表示されます。これをコメントと言い、動作や作成日時などの説明行として使います。
プロシージャボックス
現在選択されているプロシージャ名を表示するほか、モジュール内のプロシージャ名をリスト表示してくれます。

モジュール

プログラムを記述するための専用シートです。1つのモジュールに、複数のプログラムを記述することができます。簡単にいくつかのプログラムを管理するための入れ物だと覚えてもいいです。ということは、プログラムを記述するためには、必ずモジュールを作成してからプログラムコードを記述することになります。
モジュールには主に3種類あり、それぞれ記述できるプログラムが異なります。種類の見分け方は、プロジェクトエクスプローラで確認できます。

  1. オブジェクトモジュール
      ワークシートやブックの操作に伴って実行させるプログラムを記述する
  2. ユーザフォームモジュール
      ユーザーフォームを作成したり、ユーザーフォームの操作に伴って実行させるプログラムを記述する
  3. 標準モジュール
      ワークシートやブック、ユーザーフォームの操作とは直接関連しないプログラムを記述する。
      記述したプログラムは、別のモジュールのプログラムから呼び出すこともできる

プロシージャ(Procedure)

プロシージャとは、手順や手続きという意味です。通常はSubマクロ名( )からEnd Subの間に記述される一連の操作の記述の集まりのことです。そのプロシージャに記述するひとつひとつの命令文をステートメントと呼びます。プロシージャは大きく分けて、処理を実行し値を返さないSubプロシージャと処理を実行した後に値を返すFunctionプロシージャの2つがあります。

オブジェクト(Object)

オブジェクトの意味は、物や対象のことです。VBAでは、ユーザがExcelを操作する際に、その操作の対象となるものを指します。具体的には、セル、セル範囲、ブック、シートなどがあります。また、同じ種類のオブジェクトの集合体をコレクションといいます。コレクションを用いることで、同じ種類のオブジェクトを一括操作できます。

オブジェクトの例 内容
Range("A1") Rangeは「範囲」のことで、ExcelのVBAではセルやセル範囲に用います。Range("A1")とは、A1のセルという意味で、Range("A1:C3")となるとA1からC3のセルまでのセル範囲となります。
Worksheets("Sheet1") Worksheetsはワークシートことです。Worksheets("Sheet1")はシート1を指します。シート1のセルA1を指すには、Worksheets("Sheet1").Range("A1")と記述します。
Workbooks("Book1.xls") Workbooksはブックのことです。Workbooks("Book1.xls")でBook1というファイル名のブックを指すことになります。もし、WorkbooksやWorksheetsが省略された場合、選択ファイルの選択シートが自動的にオブジェクトとなります。

プロパティ(Property)

オブジェクトの持つ特性や属性のことです。オブジェクトの後ろにColor(色)、Size(サイズ)、Count(数)、Value(値)などを付けることで、その特徴や性質を示します。

プロパティの例 内容
ColorIndex 文字を示すFontなどについて、そのオブジェクトの色を指定できるプロパティです。Range("A").Font.ColorIndex=3でA1のセルの文字色を赤(色番号3)にできます。
Value セルの値を指定できるプロパティです。Range("A1").Value=10とすれば、セルA1に10の値が挿入されます。また、Range("A1").Value="=A2+A3"のような数式も設定できます。
Name オブジェクトの名前を示すプロパティです。Worksheets("Sheet1").Name="報告書"と記述すると、シート見出しのSheet1を報告書という見出しに変えられます。
ActiveCell 選択セルを示すプロパティです。これはセルを示すオブジェクトにつくものですが、通常使う場合はオブジェクトが省略され、ActiveCell.Value=1のように他のプロパティと併用され、オブジェクトのように使われます。

通常、プロパティに値を代入してオブジェクトの性質を設定する方法をとりますが、プロパティの値を取得してオブジェクトの状態を調べることもできます。その代表なものがCountプロパティで、このCountプロパティは値の取得はできますが、値の設定はできません。

■ プロパティの値を設定 …… オブジェクト.プロパティ=設定値

■ プロパティの値を取得して変数に代入 …… 変数=オブジェクト.プロパティ

メソッド(Method)

メソッドとは方法という意味です。つまり、オブジェクトの動作を示します。メソッドを使うと、選択する、移動する、削除するなどのようにオブジェクトを直接操作できます。また、操作の具体的な指定のための引数を持つメソッドもあります。

メソッドの例 内容
Add Addは追加の意味。Worksheets.Add After:=Worksheets("Sheet2")と記述すると新しいシートSheet2の後ろに追加する設定となります。
Close Closeは閉じるという意味。ブックへの操作で使い、Workbooks.Closeならばブックのすべてが閉じられる。
Clear Clearは消去する意味。セルに入った値を消去するときに使います。Range("A1").Clearで、セルA1のデータを消去します。なお、シート全体を削除する場合は、Deleteメソッドを使います。
Select Selectは選ぶの意味。セル範囲やシートを選択するときに使います。Range("A1").SelectならセルA1を選択できます。また、Worksheets.Selectならば、ブック内のすべてのシートを選択することができます。
■ SelectメソッドとActivateメソッドの考え方

SelectメソッドとActivateメソッドは同様な意味に捕らえがちです。Selectメソッドは、ひとつまたは複数のオブジェクトを選択できます。一方のActivateメソッドは、ひとつのオブジェクトをアクティブにしたり、選択している複数のオブジェクトの中からひとつのオブジェクトをアクティブにしたりできます。
また、ブックを選択する場合Activateメソッドを使い、目的のブックをアクティブしますが、Excelでは複数のブックを選択することができないため、複数のオブジェクトを選択できるSelectメソッドを使うことはできません。


■ コンテナを使う

各オブジェクトには親子関係が存在します。Excelでは、セルの親がシートで、シートの親がブックになります。その逆が子になります。親オブジェクトのことを「コンテナ」と呼び、これを利用することで目的のオブジェクトを直接指定でき、効率的な記述が可能となります。
コンテナを利用しない場合は、コンテナを省略できますが、アクティブなオブジェクトが親オブジェクトとして認識されます。