TA Wiki

Technical Artist Wiki

ユーザ用ツール

サイト用ツール


サイドバー

programing:vba

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 + F11Visual Basic Editor起動
Alt + F8マクロダイアログボックスの起動
F7コードウィンドウに移動
Ctrl + Gイミディエイトウィンドウの表示、または、移動
F5Visual Basic Editor上の選択したマクロを実行
Ctrl + SpaceVisual Basic Editor上で自動メンバー表示
Ctrl + ↑Visual Basic Editor上で1つ前のプロシージャに移動
Ctrl + ↓Visual Basic Editor上で1つ後のプロシージャに移動
Ctrl + Homeモジュールの先頭に移動
Ctrl + ←前の単語に移動
Ctrl + →後の単語に移動
Ctrl + Shift + ←単語のカーソル以前を選択
Ctrl + Shift + →単語のカーソル以降を選択
Shift + F2選択している変数、プロシージャが定義されている行に移動
Ctrl + Shift + F2Shift + 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 'コメントサンプル

条件分岐処理

If

条件分岐処理2

Select Case

繰り返し処理

Option Explicit
Sub sample()
Dim i As Long '変数の宣言。繰り返し処理のカウンタ変数として「i」を宣言。
For i=1 To 10 Step 1'繰り返し処理の回数を宣言。サンプルでは1段階ずつ増える処理を10回繰り返す処理を宣言。
    Cells(i, 1).value = i & "番目の処理"
Next
End Sub

Stepは省略する事ができる。省略した場合は「Step 1」として処理される。Stepの後の数字を変えることでカウンタ変数の値の増減量を宣言できる。

繰り返し処理2

コレクションや配列のようにオブジェクトの集まりに対して繰り返し処理を行うにはFor Eachを使用する。

Option Explicit
Sub sample()
Dim i As Long '変数の宣言。繰り返し処理のカウンタ変数として「i」を宣言。
Dim o As Object '変数の宣言。オブジェクト型を宣言。
i = 1
For Each o In Worksheets '繰り返し処理を宣言。
    Cells(i, 1).value = o.Name
    i = i+1
Next o
End Sub

繰り返し処理3

繰り返し処理の回数が決まっていない場合は、Do Loopを使用する。

下記のようにA列に値が入っている場合、値が入っているセル回数分処理する。

AB
1 
2 
3 
4 
5 
  

Do Whileサンプル

Option Explicit
Sub sample()
Dim i As Long '変数の宣言。繰り返し処理のカウンタ変数として「i」を宣言。
i = 1
Do While Cells(i, 1).Value <> "" '繰り返し処理を宣言。
    Cells(i, 2).value = i & "回目の処理"
    i = i+1
Loop
End Sub

Do Untilサンプル

Option Explicit
Sub sample()
Dim i As Long '変数の宣言。繰り返し処理のカウンタ変数として「i」を宣言。
i = 1
Do Until Cells(i, 1).Value = "" '繰り返し処理を宣言。
    Cells(i, 2).value = i & "回目の処理"
    i = i+1
Loop
End Sub

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で指定した範囲で抽出する。
Len(文字列)文字列の長さを返す。
Replace(文字列, 検索文字列, 置換文字列)文字列中の検索文字列を置換文字列に置き換える。
InStr(文字列, 検索文字列)文字列中の検索文字列の位置を返す。
StrCov(文字列, 文字種)文字列の種類を変換して返す。
programing/vba.txt · 最終更新: 2018/06/08 19:21 by 163.49.202.116