この記事ではワードやエクセルでマクロの記述言語として使われているVBAについて大枠を説明します。
VBAはVisual Basic for Application の略でプログラム言語の一つです。
実行はプロシージャと呼ばれる処理のかたまり単位で行われます。
プロシージャとは処理のかたまり
プロシージャの種類としては以下の3種類あります。
- Subプロシージャ
Subとはサブルーチン(副処理=処理のかたまり)のことです。
マクロとしてユーザが「マクロの実行」で直接実行できるのは、引数なしのSubプロシージャだけです。 - Functionプロシージャ
関数のことです。関数は、処理した結果何かしら値を返答するプロシージャのことです。 - Propertyプロシージャ
モジュールにプロパティ(=設定値)を用意して、そのプロパティの値を読み書きするためのプロシージャになります。最初のうちは使わなくても全然問題ないです。
この中で、最初に覚えたほうが良いのがSubプロシージャです。
特に引数なし、つまり、何の値も渡さず、ただ呼び出すだけで実行できるSubプロシージャがマクロとして、ユーザが直接呼び出せるものになります。
マクロとして実行できるのは、下図のように、かっこの中に何も書かれていないSubプロシージャのことです。
1 2 3 |
Sub サブルーチンの名前() 'サブルーチンの中にステートメント(命令文) End Sub |
Subプロシージャの名前には、日本語を使うこともできます。
プロシージャの中はステートメント
プロシージャが実行されると、命令文を一行ずつ実行されてきます。
この命令文をステートメントといいます。命令は基本的に1行に1ステートメントで書いていきます。
以下は、「マクロで文字表示1」という名のSubプロシージャです。
このプロシージャは4つのステートメントから構成されています。
ちなみに、かっこの中が空なので、マクロとして呼び出すことができます。
ステートメントの要素
FunctionプロシージャやSubプロシージャの呼び出し
Subプロシージャは、マクロとしてユーザが呼び出しすることができますが、それ以外にも、プロシージャの中から他のプロシージャを呼び出すことができます。
データ
VBAでは、色んなデータを使うことができます。
数字や文字列のデータや、色んなオブジェクトをデータとして使うことができます。
オブジェクトって物体って意味ですが、ワードのVBAでは、ワードの色んな機能がオブジェクトになっていて、オブジェクトをいじることによって、ワードの機能を呼び出すことができるんです。
変数
データは、変数という箱に入れることができます。
数学でいう変数と同じです。xとかyとかに、数字とか文字列とか、オブジェクトのデータを入れることができるんです。
計算と演算子
変数にデータを入れることを代入といいます。
代入したり、変数やデータ同士を計算することもできます。
また、さきほど、ワードの機能を呼び出すために、オブジェクトをいじると言いましたが、いじるというのは、オブジェクトの中の変数の値を変更したり、関数を実行したりします。
計算には演算子を使った式を使います。
例えば、
1 |
I_NUM = 5*3 + 2 |
は、I_NUM という変数に 5 掛ける 3 +2 をした結果を代入します。
また、
1 |
STR_A = "テスト" & "文字" |
は、STR_A という変数に、”テスト”と”文字”の文字列を連結した “テスト文字” という文字列を代入します。
コメント
命令としては意味がない文ですが、プログラムを見やすくするために、注釈を入れることができます。このコメントは、処理されないものですが、かなり重要になります。
複数人数でプログラムを管理する場合だけでなく、自分ひとりでプログラミングをしていても、どんな意図でステートメントを書いたのかをメモしておくと、数カ月後や数年後に読んだときにプログラムの可読性が全然違います。
絶対に、コメントを入れるようにしましょう。
例として、ステートメントの例として表示したSubプロシージャにコメントを入れてみました。
このように「’ 」をつけると、それからあとはコメントとみなされ、処理されません。
行の先頭じゃなくても、ステートメントの後にもコメントをつけることができます。
空行とインデント、空白
上のコードでは、コメントの他にも、空行があったり、Subプロシージャの中は、インデント(行のはじめにスペース文字を入れて字下げする)をします。
インデント、空行も積極的に入れるようにしましょう。
コメント