**文書の過去の版を表示しています。**
目次
VBA (Visual Basic for Applications)の使い方
このページでは、VBA (Visual Vasic for Applications)の使い方についてまとめる。VBAは、Microsoft Officeで動作するプログラミング言語である。Word, Excel, Accesse等のアプリケーションを操作することができる。VBAは「マクロ」と混同されるが、マクロはアプリケーション動作を自動実行する「機能」である。このマクロをつくるのに必要なプログラミング言語がVBAである。
1. VBAの開発環境
VBAは、Visual Basic Editor(VBE)で開発を行う。
VBE (Visual Basic Editor) ショートカットキー
キー | 内容 |
---|---|
Alt + F11 | Visual Basic Editor起動 |
Alt + F8 | マクロダイアログボックスの起動 |
F7 | コードウィンドウに移動 |
Ctrl + G | イミディエイトウィンドウの表示、または、移動 |
F5 | Visual Basic Editor上の選択したマクロを実行 |
Ctrl + Space | Visual Basic Editor上で自動メンバー表示 |
Ctrl + ↑ | Visual Basic Editor上で1つ前のプロシージャに移動 |
Ctrl + ↓ | Visual Basic Editor上で1つ後のプロシージャに移動 |
Ctrl + Home | モジュールの先頭に移動 |
Ctrl + ← | 前の単語に移動 |
Ctrl + → | 後の単語に移動 |
Ctrl + Shift + ← | 単語のカーソル以前を選択 |
Ctrl + Shift + → | 単語のカーソル以降を選択 |
Shift + F2 | 選択している変数、プロシージャが定義されている行に移動 |
Ctrl + Shift + F2 | Shift + F2で移動した行から元の位置に戻る |
Tab | インデント(字下げ)を追加。 |
Shift + Tab | インデント(字下げ)を戻す。 |
2. VBAの基礎
変数の宣言
Dim num As Long
変数名称ルール
- 変数名には、英数字、漢字、ひらがな、カタカナ、アンダースコア(_)が使用できる。
- 先頭文字に数字や記号を使用することはできない。
- 半角文字で255文字を超える名前は付与できない。
- 予約語(関数、ステートメント等)と同じ名称は不可。
- 同一プロシージャ内で名称の重複不可。
変数宣言の強制
Excel VBAのソースコードの先頭に「Option Explicit」と記述することで、変数の宣言が強制される。
変数の宣言をしている例
Option Explicit Dim num As Long num = 10 Debug.Ptint num
変数の宣言をしていない例
Option Explicit num = 10 Debug.Ptint num
この場合、変数宣言のエラーが発生する。
コメント挿入
VBAのソースコード上にコメントを挿入するには、「’ (シングルクォーテーション)」の後に続けて記載する。
Option Explicit Dim num As Long 'コメントサンプル
繰り返し処理
Option Explicit Dim i As Long '変数の宣言 For i=1 To 10 Cells(i, 1).value = i & "番目の処理" Next i
Excel VBA 記述ルール
ルール | 内容 |
---|---|
[半角スペース]_ | 行連結文字。半角スペースと_で、便宜上の改行とする。長いコードの視認性を上げたい場合に挿入して活用する。 |
“String” | 文字列はダブルクォーテーションで囲む |
“String” & “String” | 文字列の連結は&(アンパサンド)を挿入する。アンパサンドの前後には半角スペースを入力すること。 |
vbnewline | 改行を行いたい場合、「vbnewline」と入力する。 |
#date# | 日付はハッシュタグで囲む。 |
Const [定数名] As [データ型] = [値] | 定数の宣言と代入。定数の場合は、宣言と代入を同時に行う。 |
Dim [変数名] As [データ型] | 変数の宣言 |
[変数名] = [値] | 変数への値の代入 |
Dim [配列名(インデックス)] As [データ型] | 配列の宣言 |
[配列名(インデックス)] = [値] | 配列への値の代入 |
[変数名] = Array([値1], [値2], [値3]) | 配列へ値をまとめて代入。変数のデータ型は「Variant」とすること。 |
Dim [配列名(インデックス1, インデックス2)] As [データ型] | 2次元配列の宣言 |
Dim [オブジェクト名] As [オブジェクト型] | オブジェクトの宣言 |
Set [オブジェクト名] = [オブジェクト] | オブジェクト変数へのオブジェクトの格納 |
VBA 演算子
代入演算子
演算子 | 内容 |
---|---|
= | 右辺を左辺に代入する。 |
算術演算子
演算子 | 内容 |
---|---|
+ | 足し算 |
- | 引き算 |
* | 掛け算 |
/ | 割り算 |
Mod | 剰余 |
\ | 割り算の結果を整数で返す |
^ | べき乗 |
比較演算子
演算子 | 内容 |
---|---|
= | 左辺と右辺が等しい時、Trueを返す。 |
< | 左辺が右辺より小さい時、Trueを返す。 |
<= | 左辺が右辺以下の時、Trueを返す。 |
> | 左辺と右辺より大きい時、Trueを返す。 |
>= | 左辺が右辺以上の時、Trueを返す。 |
<> | 左辺と右辺が等しくない時、Trueを返す。 |
Is | 左辺と右辺のオブジェクトの参照を比較する。 |
Like | 文字パターンによる比較を行う。 |
文字列連結演算子
演算子 | 内容 |
---|---|
& | 左辺と右辺の文字列を連結する。 |
論理演算子
演算子 | 内容 |
---|---|
And | 全ての条件が一致する場合 |
Or | 一方の条件が一致する場合 |
Not | 指定条件が異なる場合 |
Excel VBA テクニック
Excel VBAでセルの背景色を変える方法
Excel VBAでセルの背景色を変えるには、InteriorオブジェクトのColorプロパティを使用する。
Option Explicit Sub sample() sheet1.Range("A1:A3").Interior.Color = RGB(255,0,0) End Sub
Excel VBAでセルのフォント設定を変える方法
Excel VBAでセルのフォント設定を変えるには、Fontオブジェクトのフォントプロパティを使用する。
Option Explicit Sub sample() With Sheet1.Range("A1").Font 'Withを使用してプロパティの記述をまとめる。 .Color = RGB(255,0,0) '文字色を赤色にする。 .Size = 18 'フォントサイズを18ptにする。 .Bold = True 'フォントを太字にする。 End Sub
Excel VBAのデバッグ方法
ここではExcel VBAのコードを記述するVBE画面でのデバッグ方法を解説します。 VBEには、「イミディエイト」という記述したコードの実行結果を出力する画面が用意されています。初期設定では表示されていない為、VBE画面を起動したらメニューの表示 → イミディエイト ウィンドウ(Ctrl + G)から表示します。イミディエイトウィンドウに結果を出力するには「Debug.Print」を使用します。
イミディエイトウィンドウ内でコマンドを直接入力することもできます。
- 式の計算
- 変数・プロパティの入出力
- プロシージャの実行
式の計算、変数・プロパティの入出力を行うには「?」に続けてコマンドを記述します。
式の計算例
コマンド
?1+1
実行結果
?1+1 2
変数・プロパティの入出力例
コマンド
?ActiveSheet.Name
実行結果
?ActiveSheet.Name Macro1
主な Excel VBA 関数
関数 | 内容 |
---|---|
Now() | 現在の日時を返す。 |
Ucase() | 小文字アルファベットを大文字にする。 |
Mid(引数1, 引数2, 引数3) | 引数1(文字列)を引数2と引数3で指定した範囲で抽出する。 |