VBA
VBA(Visual Basic Application)は、Office製品に搭載されている、処理を自動化するための開発言語のこと。
ExcelにはExcel VBA、AccessにはAccess VBAが用意されている。
Excel VBAとAccess VBAは同じ部分もあるけれど、使える機能など異なる部分もある。
プロジェクト、モジュール、プロシージャ
プロジェクトはモジュールを格納する入れ物で、モジュールはプロシージャを格納する入れ物になる。
プロシージャは、VBAで作成したプログラムのこと。
モジュールは、次のような種類がある。
| 標準モジュール | データベース全体で使用するプログラムを格納するモジュールのこと。 |
| フォームモジュール | フォームで使用するプログラムを格納するモジュールのこと。 |
| レポートモジュール | レポートで使用するプログラムを格納するモジュールのこと。 |
モジュールは、1つの宣言セクションと、1つ以上のプロシージャで構成されている。
宣言セクションは、変数の宣言などを行うもの。
標準モジュール、フォームモジュール、レポートモジュールは、それぞれエクスポートすることができる。
エクスポートした時、標準モジュールはbas、フォームモジュールとレポートモジュールはclsの拡張子のファイルになる。
オブジェクト、プロパティ、メソッド
オブジェクトは、VBAの処理の対象になるもの。レポート、フォーム、テキストボックス、ラベル、ボタンなどがこれに当たる。
オブジェクトは、プロパティとメソッドで構成されている。
プロパティは、オブジェクトの属性のこと。名前、色、設定などオブジェクトの特徴を表す。
メソッドは、オブジェクトに対する命令のこと。開く、印刷する、最大化するなどオブジェクトを操作する。
演算子
演算子は、演算内容を表す記号のこと。数値の計算、文字列の結合、値の代入などができる。
演算子には、次のようなものがある。
- 算術演算子
数値の計算を行う演算子のこと。次のようなものがある。
演算子 意味 + 2つの数値を足し算を行う。 – 2つの数値を引き算を行う。 * 2つの数値を掛け算を行う。 / 2つの数値を割り算を行う。 Mod 2つの数値を割り算の余りを求める。 ¥ 2つの数値を割り算を行い整数で返す。 ^ 2つの数値のべき乗を行う。
- 比較演算子
数値や文字の比較を行う演算子のこと。次のようなものがある。
演算子 意味 = 左辺と右辺が等しいときにTrueを返す。 < 左辺が右辺より小さいときにTrueを返す。 <= 左辺が右辺以下のときにTrueを返す。 > 左辺が右辺より大きいときにTrueを返す。 >= 左辺が右辺以上のときにTrueを返す。 <> 左辺と右辺が等しくないときにTrueを返す。 Is 左辺が右辺のオブジェクトの参照を比較する。 Like 文字パターンによる文字列の比較をする。
Like演算子の文字パターンには、次のようなものがある。
文字パターン 意味 ‽ 任意の1文字を表す。 * 任意の数の文字を表す。 ♯ 任意の1文字の数字を表す。 [文字リスト] 文字リスト内の任意の1文字を表す。 [! 文字リスト] 文字リスト外の任意の1文字を表す。
- 文字列連結演算子
文字列の連結を行う演算子のこと。次のようなものがある。
演算子 意味 & 左辺と右辺の文字列を結合する。 + 左辺と右辺の文字列を結合する。
+演算子には数値を加算する働きもあるので、文字列によっては予期しない動きをすることがある。
文字列を連結するときは、+演算子ではなく、&演算子を使うようにするよ。
- 論理演算子
真偽の判定を行う演算子のこと。次のようなものがある。
演算子 意味 And 論理積 Or 論理和 Not 論理否定 Xor 排他的論理和 Eqv 論理等価 Imp 論理包含
演算の結果は次のようになる。
式1 式2 And Or Xor Eqv Imp True True True True False True True True False False True True False False False True False True True False True False False False False False True True
- 代入演算子
右辺の値を左辺の変数などに代入する演算子のこと。
演算子 意味 = 右辺を左辺に代入する。
演算子の優先順位
演算の優先順位は次のようになる。
| 優先順位 | 演算子 |
|---|---|
| 高い ↑ ↓ 低い |
|
| 算術演算子 | |
| 連結演算子 | |
| 比較演算子 | |
| 論理演算子 |
また、同じ演算子での優先順位は次のようになる。
| 優先順位 | 算術演算子 | 比較演算子 | 論理演算子 |
|---|---|---|---|
| 高い ↑ ↓ 低い |
^ | = | Not |
| – | <> | And | |
| * / | < | Or | |
| ¥ | > | Xor | |
| Mod | <= | Eqv | |
| + – | >= | Imp |
キーワード
キーワードは、VBAにとって特別な意味を持つ文字のこと。SubやEndがこれに当たる。
キーワードと同じものをプロシージャや変数の名前に用いることはできないよ。
組み込み定数
組み込み定数は、VBAであらかじめ用意されている定数のこと。次のようなものがある。

Visual Basicの定数
先頭にvbが付くもの。Access以外のVBAでも使用できる。
- vbCr:キャリッジリターン文字
- vbLf:ラインフィード文字
- vbCrLf:改行文字
- vbNewLine:改行文字

Access VBAの定数
先頭にacが付くもの。Access以外のVBAでは使用できない。
参照設定
参照設定は、VBAにない機能を読み込んで、VBAで利用できるようにするもの。
VBEのツールから参照設定を開いて、読み込みたい機能にチェックを入れると、VBAで利用できるようになるよ。
VBAの文法
VBAで用いる基本的な文法には、分岐処理、繰り返し処理がある。
分岐処理は、条件に当てはまる場合と、条件に当てはまらない場合で処理を変えるもの。Ifステートメント、Select Caseステートメントがこれに当たる。
繰り返し処理は、決められた回数になるまで、または条件を満たすまで処理を繰り返すもの。For Nextステートメント、Do Loopステートメント、For Each…Nextステートメントがこれに当たる。
Ifステートメント
Ifステートメントは、次のように記述する。
If 条件式1 Then
処理1
ElseIf 条件式2
処理2
ElseIf 条件式3
処理3
Else
処理4
End IfElseIf節は、条件と処理を追加するもの。
Else節は、どの条件も満たさなかった場合の処理を記述するもの。
Select Caseステートメント
Select Caseステートメントは、次のように記述する。
Select Case 対象
Case 条件式1
処理1
Case 条件式2
処理2
Case 条件式3
処理3
Case Else
処理4
End SelectCase節は、条件と処理を追加するもの。
Case Else節は、どの条件も満たさなかった場合の処理を記述するもの。
また、Case節には次のような記述方法もある。
| Case 1 | 1のとき。 |
| Case Is >= 1 | 1以上のとき。 |
| Case Is <= 1 | 1以下のとき。 |
| Case Is > 1 | 1より大きいとき。 |
| Case Is < 1 | 1より小さいとき。 |
| Case 1 To 5 | 1以上5以下のとき。 |
| Case 1,5 | 1または5のとき。 |
For Nextステートメント
For Nextステートメントは、決められた回数だけ処理を繰り返すもの。
カウンタ変数という、繰り返した回数を格納する変数を用いる。
For カウンタ変数 = 初期値 To 最終値 (Step 加算値)
処理
Next カウンタ変数Stepキーワードは、加算値を指定するもの。省略すると1に設定される。
例えば、カウンタ変数の初期値を2、最終値を10、加算値を2にした場合、カウンタ変数は2、4、6、8、10と変化する。
Do Loopステートメント
Do Loopステートメントは、条件を満たしている間や、条件を満たすまで処理を繰り返すもの。
条件を満たしている間は処理を繰り返すWhileキーワードや、条件を満たすまで処理を繰り返すUntilキーワードを用いる。
記述方法は、実行前判断と実行後判断がある。
実行前判断では、最初に条件を判断する。そのため、始めから条件を満たしていなければ、一度もDo Loopステートメントの処理は実行されない。
Do (While または Until) 条件式
処理
Loop実行後判断では、最後に条件を判断する。そのため、始めから条件を満たしていなくても、一度はDo Loopステートメントの処理が実行される。
Do
処理
Loop (While または Until) 条件式For Each…Nextステートメント
For Each…Nextステートメントは、要素に対して処理を繰り返すもの。
要素の数だけ処理が繰り返され、処理を行う順番を指定することはできないよ。
For Each 要素 In 配列
処理
Next 要素Withステートメント
Withステートメントは、オブジェクト名を省略するもの。次のように記述する。
With 対象となるオブジェクト
.オブジェクトに対する処理
End With例えば、次のような文章があるとする。
ねこごろうの身長は23~25cm
ねこごろうの体重は3~5kg
ねこごろうの睡眠時間は12〜16時間
Withステートメントは、このような文章を分かりやすくすることができるよ。
With ねこごろう
身長は23~25cm
体重は3~5kg
睡眠時間は12〜16時間
End WithExitステートメント
Exitステートメントは、処理から抜け出すもの。次のようなものがある。
| Exitステートメント | 抜け出す対象 |
|---|---|
| Exit Do | Do Loopステートメント |
| Exit For | For Nextステートメント、For Each Nextステートメント |
| Exit Sub | Subプロシージャ |
| Exit Function | Functionプロシージャ |