【ExcelVBA】VBAの基本構文
VBAの基本構文
VBAの構文は大きく分類すると次の3つになります。
・オブジェクト式(プロパティ、メソッド)
・ステートメント
・関数
オブジェクト式(プロパティ)
オブジェクト式はプロパティとメソッドの2つに分けることができます。
プロパティの使い方は次の通りです。
[オブジェクト].[プロパティ] = [値]
実際のコードは次のようになりますが。まだプログラムを実行することができませんので、雰囲気だけをつかんで下さい。
オブジェクトが「Range(“A2”)」、プロパティが「Value」、値が「”test”」になっています。
Range("A2").Value = "test"
このプログラムを実行するとA2セルに「test」という文字が表示されます。
オブジェクトとは、VBAで操作される対象を表します。この場合だとA2セルを表すということです。オブジェクトには他にもシート、ブック、グラフなど様々なものがあります。
プロパティとはそのオブジェクトの様子や状態を表します。「Value」というプロパティはその名の通り値という意味でセルの中に入力されている値を値を表します。このプロパティもオブジェクト同様にたくさんの種類があります。たとえば、「セル」オブジェクトの場合は、書式や罫線、縦横サイズ、フォントなどです。
このオブジェクトとプロパティには非常にたくさんの種類がありますので、全て覚えてからプログラムを作るのではなく、作りながら覚えていくことが大切です。まずは出てきたものを覚えていきましょう。
注意点としては、プロパティはオブジェクトに紐づいているということです。「セル」オブジェクトには「罫線」プロパティがありますが、「シート」オブジェクトには「罫線」プロパティはありません。シートに罫線を設定することはできませんよね。「シート」オブジェクトには「シート」オブジェクト独自のまた別のプロパティがあります。(例えば、名前など)
オブジェクト式(メソッド)
メソッドの使い方は次の通りです。
[オブジェクト].[メソッド]
実際のコードは次のようになります。オブジェクトが「Range(“A2”)」、メソッドが「ClearContents」になっています。
Range("A2").ClearContents
このプログラムを実行するとA2セルに表示されていた値が消えます。
メソッドとはオブジェクトの振る舞いや、オブジェクトへの命令を表します。操作対象のオブジェクトに何らかの結果を起こすような命令を行います。今回の例の「ClearContents」というメソッドはセルの中に入力されている値をクリア(削除)します。メソッドもプロパティと同様にたくさんの種類があります。また、オブジェクトに紐づいているということも同じです。
プロパティとメソッドはこのように非常に似た特性を持ち、プログラムコードも非常に似ているため混同されてしまう方が多いようです。
以下に特徴をまとめます。
・プロパティ・・・オブジェクトの属性(セルの値・書式・罫線など、シートの名前など)
・メソッド ・・・オブジェクトへの命令(セルの値を削除、セルにコメントを追加、セルをコピー)
メソッドはオプションを指定できるものがあります。このオプションのことを「引数(ひきすう)」と呼ぶこともあります。オプションと引数は同じ意味です。
オプションの使い方は次の通りです。
指定できるオプション名はメソッド毎に決まっています。イコールの前にコロンが入りますので間違えないようにしましょう。
[オブジェクト].[メソッド] [オプション名] := [値] [オブジェクト].[メソッド] [オプション名1] := [値1], [オプション名2] := [値2]
実際のコードは次のようになります。メソッドが「AddComment」、オプション名が「Text」、値が「”vba expert”」になっています。
Range("A2").AddComment Text:="vba expert"
このプログラムを実行するとA2セルに「vba expert」というコメントがつきます。
「AddComment」メソッドの「Text」オプションは必須です。コメントを追加するためには、文字を指定しないと追加できませんよね。このように各メソッドにはオプションのあるなし、ある場合にはその数、必須か任意かということが予め決まっています。
ステートメント、関数
ステートメントは、条件分岐や繰り返しなどVBAプログラムの動作を制御する構文です。
関数は、ExcelのSUMやAVERAGE、VLOOKUPなどの関数と同様に与えたデータによって決まった値を返す構文です。