マクロのプログラムが書かれている「VBエディタ」を使いこなせるようになれば、マクロ記録だけでは作れない高度なプログラムが作れるようになります。また、マクロ記録で作ったプログラムを変更して、さらに使いやすいマクロにすることも可能です。ここでは、VBエディタの仕組みを解説します。
○○の属性を△△に変更すると書くのが
「オブジェクト.プロパティ=△△」構文
プロパティとはオブジェクトの属性(特徴や性質)のことです。「オブジェクト).プロパティ」と記述し、オブジェクトとプロパティの間は「.(ピリオド)」を入れます。プロパティの値は「オブジェクト.プロパティ」のかたちでわかります。逆にプロパティの値を設定する場合は「オブジェクト.プロパティ=設定値」のかたちになります。
たとえば、「社員の岡田太郎さんの内線は「MsgBox 社員("岡田太郎").内線」とします。また、「社員の岡田太郎さんの基本給を25万円に設定する」には「社員("岡田太郎").基本給=250000」とします。実際には、たとえば「セルA1の値を100にする」という記述は「Range("A1").Value=100」となります。
「Range("A1").Value=1」という記述では、マクロ実行したときに選択しているシートのセルの値が設定されます。いつでも「Sheet1」の値が設定されるようにするには「Worksheets("Sheet1").Range("A1").Value=1」と記述します。
また、これまでオブジェクトは1階層の例で説明しましたが、「セル」の上は「ワークシート」、その上は「ブック」という具合にExcelのオブジェクトは階層構造になっています。たとえば「社員("岡田太郎")」だけではどこの社員なのか特定できないことがあるように、「セル("A1")」だけではどのシートのセルのことなのかわからない場合があるのです。このようなときはオブジェクトを階層構造で表します。「会社名("○×商事").所属("営業部").役職("課長").社員("岡田太郎")」というように、VBAでは「Worksheets("Sheet1").Range("A1")」のように記述します。
【よく使うプロパティ】
- ColorIndex(カラーインデックス)
- 内容:
文字の色を指定するときに使うプロパティ。「Range("A1").Font.ColorIndex=3」というように記述する。これは「A1セルのフォントの色を3(赤色)にする」という意味。 - Value(バリュー)
- 内容:
セルの値を指定するときに使うプロパティ。「Range("A1").Value ="ドット"」とすると「A1セルに"ドット"と入力する」の意味になる。「Range("A1").Value ="A2+A3"」なども可。 - Name(ネーム)
- 内容:
オブジェクトの名前を示すプロパティ。「Worksheets("Sheet1").Name ="名前変更"」と記述すると、シートの見出しを「Sheet1」から「名前変更」へと変えることができる。 - ActiveCell(アクティブセル)
- 内容:
選択するセルを示すプロパティ。これはセルを示すオブジェクトにつくものだが、通常使う場合はオブジェクトが省略されて「ActiveCell.Value =1」のようにオブジェクトのように使われる。
この連載の記事
-
第5回
ビジネス
Excel VBA実践編 III――繰り返しや条件別指定も -
第3回
ビジネス
Excel VBA実践編――基本構文を知る -
第2回
ビジネス
Excel VBAエディタを使ってみよう -
第1回
ビジネス
Excel VBAで面倒な仕事を自動化しよう -
ビジネス
「Excel VBA」でプログラム入門 - この連載の一覧へ