VBAコードはでたらめに書いても動かない。記録したマクロもでたらめには記録されない。
「マクロの記録」を行うと次のようなVBAコードが作成される。「セルA1を選択して"test"という文字列を入力し、Enterで確定する」という操作の記録である。記録されるのは標準モジュールという場所。
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2005/11/9 ユーザー名 : miyaho_rinn
'
' Keyboard Shortcut: Ctrl+Shift+K
'
Range("A1").Select
ActiveCell.FormulaR1C1 = "test"
Range("A2").Select
End Sub
Sub Macro1()
・
・
・
End Sub
上記のようにSubから始まり、End Subで終わるコードの単位をSubプロシージャと呼ぶ。
プロシージャは、マクロ実行の単位。プロシージャには実行方法や機能によりいくつか種類があるが、マクロの記録で作成されたプロシージャはSubというキーワードで始まるため、Subプロシージャと呼ばれる。
モジュールはこのプロシージャを記録しておくための用紙だと思えばよい。
Sub に続く文字列がプロシージャ名(マクロ名)で、例の場合は「Macro1」がプロシージャ名となる。プロシージャ名はどのプロシージャを実行するかを特定するためのものなので、同じ名前のプロシージャを同じプロジェクトに複数作ることは出来ない。標準モジュールに作成されるSubプロシージャは任意にその名前を変更することが出来る。
記録されたコードの一行一行はステートメントと呼ばれる。ステートメントはコンピュータ用語で命令文、指示文などと訳される。
ステートメントには、キーワード、演算子、変数、定数、および式を指定でき、次のいずれかに分類される。
以下、記録したコードを例に基本的な構造を説明する。
Sub Macro1()
上記が「Macro1」という名前のSubプロシージャの第1行目。Subは単なるプロシージャ名を書くための決まりごとではなく、これ自体がSubステートメントと呼ばれる宣言ステートメント。ヘルプでは下記の記述。
Sub プロシージャの名前、引数、およびプロシージャの本体を宣言します。
Subに続く文字列がプロシージャ名として認識される。プロシージャが呼び出されるとこの行から開始される。(基本的に)上から下へ一行ずつ実行される。
'
' Macro1 Macro
' マクロ記録日 : 2005/11/9 ユーザー名 : miyaho_rinn
'
' Keyboard Shortcut: Ctrl+Shift+K
'
記録されたマクロのうち、上記の部分は実行されない。先頭に「'」の付いている行はコメント行。マクロの記録で作成されたこの部分のコメントは記録時に「マクロの記録ダイアログボックス」で設定した[マクロ名(M)]、[説明(D)]、[ショートカットキー(K)]の内容が反映される。
コメント行は覚書であり、コメントとして書かれた内容はマクロそのものには影響を及ぼさない。
Keyboard Shortcutの部分も単なるコメントであるので、ここを書き換えてもショートカットキーは変更されないことは注意されたい。ショートカットキーは「マクロの記録ダイアログボックス」でのみ設定できる。
コメントは実際には何も行わないので、必ずしも必要なものではないが、プログラマの世界でも「一ヶ月前のコードは他人のコード」という格言もあるそうなので、記録マクロでもどんな操作を記録したものなのか書き添えておくと後で理解の助けとなる。
Range("A1").Select
ActiveCell.FormulaR1C1 = "test"
Range("A2").Select
続く3行が記録されたマクロの実行部分。つまりプログラムの本体である。
End Sub
これはEndステートメントと呼ばれる。この場合はSubプロシージャを終了させる。
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||