トップ > スキル : アプリケーション > VBA for Excel > 基礎編(VBAにTRY①)

VBA_EXCEL

VBAにTRY

では、簡単なVBAを作成していきましょう。セルA1から行方向に月から土までの曜日をオートフィルで実行させて見ましょう。以下のように記述してください。

まず、1行目から解説していきます。1行目は、プロシージャの名前となります。名前の先頭は文字でなければいけません。ようするに、最初に数字などを使えないということです。プロシージャ名には、以下のような制約があります。

  • 名前の先頭は必ず文字とする。
  • 文字名の中に、スペース、ピリオド(.)、感嘆符(!)、および@、&、$、#などの記号は使えない。
  • 最大の文字数は半角で255文字まで、漢字、カタカナ、ひらがな、英数などが使えます。
  • VBAで使われている関数やメソッド、プロパティなどと同じ名前は使えない。
  • 英字の場合は、大文字と小文字は区別されない。

2、3行目は、Rangeプロパティでセルのオブジェクト名を取得しています。( )の中にそのセル番地を入れる場合は、必ず「" "」ダブルクォーテーションで囲みます。
上の例では、セルA1とセルB1に「月」と「火」という文字を入れる(書き込む)という意味となります。一般的に、日本語をVBA内で記述する場合は、ダブルクォーテーションで囲むものと覚えておきましょう。

セルの中に値を代入するには、代入ステートメント「Let」を使います。
   Let Range(“a1”) = 1000    ・・・ セルA1に1000の値を入れる

ただし、通常は「Let」は省略して記述します。
ここで大事なことは、必ず=の右辺から左辺に代入は行われます。算数ならば「a + b = c」ですが、VBAでは「c = a + b」と記述し、先にa + bが処理され、その結果がcに格納されることになります。文字の場合は、ダブルクォーテーションで囲み、数値は直接そのまま数字を書き込みます。

4行目では、セルA1とB1の2つのセルを選択させています。セル範囲を指定するときは、Rangeプロパティで開始と終了のセル番地を「:」(コロン)で区切ります。セル範囲をオブジェクトとし、Selectメソッドで指定した範囲を選択状態にします。
5行目では、選択された範囲からオートフィルを実行しています。Autofillはメソッドですから、オブジェクトを指定しなければなりません。4行目で選択した範囲をオブジェクトとします。そのオブジェクトを指定するには、Selectionプロパティを使います。これは、すでに選択状態になっているセル範囲というオブジェクトを指定する場合によく使われます。
Selectionプロパティの後に、Autofillメソッドを記述し、引数として実行する出力先を指定しています。この場合の引数は、選択範囲の開始セルとオートフィルの終了セル番地をRangeプロパティで指定しています。

Letステートメントの書式

Let varname = data (Letは省略可能)

varname : 変数名またはプロパティ名を指定
data : 左辺に代入する値を指定

Selectメソッドの書式

object.Select

object : 選択するオブジェクト名を指定

Autofillメソッドの書式

object.Autofill (Destination、Type)

Destination : オートフィルの出力先をRangeオブジェクトで指定
Type : リストの種類の指定(省略可能)

メソッドには引数を記述していきますが、その記述方法には2つあります。引数には順番があり、Autofillメソッドを例とすると、最初がDestination、次がTypeとなります。
1つの記述方法として、順番どおりに記述する方法があります。

object.Autofill Range(“a1:a10”)、type

もうひとつは、名前付き引数と呼ばれるもので、記号「:=」を付けて値を設定します。

object.Autofill Destination:=Range(“a1:a10”)

引数の順番を覚えているのであれば、1つ目の方法が楽ですが、途中省略するものが多い場合や順番が不明な場合などは名前付き引数を使います。