VBAの基本的な構文などが理解できたうえで、実践的なVBAコードの記述を覚えてみましょう。Excelにも備わっているVBAというプログラミング言語を駆使し、複雑な操作を処理できるようになれば、表計算ソフトが効率的なものになります。ここでは、VBAの実践編としてさまざまな操作の活用を主に説明していきます。また、ユーザーフォームを利用して、効率よく入力できるように工夫してみます。まず、最初にVBAで使われる用語について、簡単に述べていきます。
VBEは、VBAを操作してプログラム作成、修正などを行うためのソフトウェアです。このVBEの画面でプログラムを記述していきます。VBEの起動は、ALT+F11で実行します。
プログラムを記述するための専用シートです。1つのモジュールに、複数のプログラムを記述することができます。簡単にいくつかのプログラムを管理するための入れ物だと覚えてもいいです。ということは、プログラムを記述するためには、必ずモジュールを作成してからプログラムコードを記述することになります。
モジュールには主に3種類あり、それぞれ記述できるプログラムが異なります。種類の見分け方は、プロジェクトエクスプローラで確認できます。
プロシージャとは、手順や手続きという意味です。通常はSubマクロ名( )からEnd Subの間に記述される一連の操作の記述の集まりのことです。そのプロシージャに記述するひとつひとつの命令文をステートメントと呼びます。プロシージャは大きく分けて、処理を実行し値を返さないSubプロシージャと処理を実行した後に値を返すFunctionプロシージャの2つがあります。
オブジェクトの意味は、物や対象のことです。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が省略された場合、選択ファイルの選択シートが自動的にオブジェクトとなります。 |
オブジェクトの持つ特性や属性のことです。オブジェクトの後ろに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プロパティは値の取得はできますが、値の設定はできません。
■ プロパティの値を設定 …… オブジェクト.プロパティ=設定値
■ プロパティの値を取得して変数に代入 …… 変数=オブジェクト.プロパティ
メソッドとは方法という意味です。つまり、オブジェクトの動作を示します。メソッドを使うと、選択する、移動する、削除するなどのようにオブジェクトを直接操作できます。また、操作の具体的な指定のための引数を持つメソッドもあります。
メソッドの例 | 内容 |
---|---|
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メソッドは、ひとつのオブジェクトをアクティブにしたり、選択している複数のオブジェクトの中からひとつのオブジェクトをアクティブにしたりできます。
また、ブックを選択する場合Activateメソッドを使い、目的のブックをアクティブしますが、Excelでは複数のブックを選択することができないため、複数のオブジェクトを選択できるSelectメソッドを使うことはできません。
各オブジェクトには親子関係が存在します。Excelでは、セルの親がシートで、シートの親がブックになります。その逆が子になります。親オブジェクトのことを「コンテナ」と呼び、これを利用することで目的のオブジェクトを直接指定でき、効率的な記述が可能となります。
コンテナを利用しない場合は、コンテナを省略できますが、アクティブなオブジェクトが親オブジェクトとして認識されます。