Visual Basic for Applications (VBA)は、Microsoft Officeシリーズに搭載されているプログラミング言語です。

基本的な文法は Visual Basic と同じです。

Microsoft Office 2003でVBAを使う

Microsoft Office 2003でVBAを使うには、メニューから[ツール]-[マクロ]-[Visual Basic Editor]を選択する。

Microsoft Office 2007でVBAを使う

デフォルト状態の Microsoft Office 2007 では、VBAでマクロを作成するためのボタンやメニューがありません。VBAを扱えるようにするには設定が必要です。Microsoft Office Excel 2007 を例に設定方法を説明します。

VBAを扱えるように設定するには、まずOfficeボタンをクリックしてメニューを表示させます。

Officeボタン

次に、「Excel のオプション」ボタンをクリックします。

Excelのオプション

「Excel のオプション」ダイアログ・ボックスで「基本設定」をクリックします。「[開発] タブをリボンに表示する」チェック・ボックスをクリックします。「OK」ボタンをクリックして、「Excel のオプション」ダイアログ・ボックスを閉じます。

開発タブ

そうすると、Microsoft Office Excel 2007 に「開発」タブが表示されるようになります。

Microsoft Office Excel 2007 を例に説明しましたが、Microsoft Office Word 2007 でもやり方は同じです。

VBAのプログラムを入力する

「開発」タブをクリックする。リボンの「Visual Basic」をクリックすると、「Microsoft Visubal Basic for Applications」ウィンドウが開く。

ribbon

「Microsoft Visual Basic for Applications」ウィンドウの「挿入」メニューから「標準モジュール」を選択すると、「プロジェクト」に「標準モジュール」が追加され、コードウィンドウが開く。

Insert standard module

module1

コードウィンドウに以下のプログラムコードを入力する。

Sub HelloWorld()
    MsgBox "Hello, world!"
End Sub

ExcelでVBAマクロを実行する

Microsoft Excelの「開発」タブから、リボンの「マクロ」をクリックすると、「マクロ」ダイアログが開く。

module1

「マクロ」ダイアログの「マクロ名」から「HelloWorld」を選択して、「実行」ボタンをクリックする。

module1

VBAマクロが実行されて、メッセージボックスが表示される。

module1

VBAマクロを含むファイルの保存

Excelファイルの種類化「Excelブック(*.xslx)」の場合は、ファイルにマクロを保存することができない。Excelファイルにマクロを含めて保存する場合は、「名前を付けて保存」ダイアログの「ファイルの種類」から「Excelマクロ有効ブック(*.xlsm)」を選択して、「保存」ボタンをクリックする。

グローバル変数とグローバル定数の定義

VBAでグローバル変数やグローバル定数を定義するには、標準モジュールの[(General)]-[(Declarations)]でPublic宣言する。

Public Const ROW_MAX As Integer = 100
Public iSheet As Worksheet

VBAのデバッグログ

VBAでは、Debug.Printでデバッグ用の情報をイミディエイトウィンドウに出力することができる。

Debug.Print expr

VBAで正規表現を使う

VBAで正規表現を使うにはRegExpオブジェクトを利用する。RegExpを使用するためには、事前に次の参照設定を行う必要がある。

  1. Visual Basic for Applicationsの「ツール」メニューから「参照設定」をクリックする。
  2. 「Microsoft VBScript Regular Expressions 5.5」にチェックを入れる。
  3. 「OK」ボタンをクリックする。

RegExpオブジェクトとは、正規表現を表すオブジェクトである。

RegExpオブジェクトのプロパティ
Property Description
Pattern 正規表現を定義する文字列
IgnoreCase 大文字と小文字を区別するかどうかを表すブール型(Boolean)の値
Global ReplaceメソッドやExcecuteメソッドを呼び出す際、複数マッチを行うかどうかを表すブール型(Boolean)の値
MultiLine 文字列を複数行として扱うかどうかを表すブール型(Boolean)の値
RegExpオブジェクトのメソッド
Method Description
Test 正規表現にマッチするかどうかをブール型(Boolean)で返す。
Replace 正規表現にマッチする部分文字列を指定した文字列で置き換える。
Execute 正規表現とマッチする部分を検索して、検索結果をMacheオブジェクトを含むMachesコレクションとして返す。
Dim re As RegExp

Set re = New RegExp
re.Pattern = "[0-9]"
MsgBox re.Test("0123")