トップ > スキル : アプリケーション > VBA for Access > 応用編(VBA基礎知識)

VBA_Access

プロシージャの記述

VBE画面でプロシージャの記述を行うには、まずモジュールを作成することが必要です。ここでは、標準モジュールを作成して、記述していきます。

VBE画面のメニュー[挿入]-[標準モジュール]をクリックします。

※ 新規プロジェクトにはモジュールが1つもないので、ドロップダウン・メニュー内のプロシージャはグレー色で選択できないことが確認できます。

プロジェクト・エクスプローラウィンドウに、「標準モジュール」が作成され、[コード」ウィンドウが表示されます。

「練習プロシージャ」を作成します。
メニュー[挿入]-[プロシージャ]をクリックします。

[プロシージャの追加]ウィンドウが表示されます。
[名前]欄に「練習」と入力します。種類は「Subプロシージャ」、適応範囲は「Publicプロシージャ」を選択して[OK]ボタンをクリックします。

※ 適応範囲とは、特定のモジュール内だけで実行できるプロシージャと他のモジュール内でも利用できるプロシージャであるかを指定できます。Privateプロシージャは前者でPublicプロシージャは後者に該当します。

※ Privateプロシージャの記述書式は「Private Sub…End」、Publicプロシージャは「Public Sub…End Sub」となりますが、「Sub…End Sub」とSubの前を省略した場合は、Publicプロシージャと認識されます。

コード・ウィンドウにプロシージャの開始コードと終了コードが自動的に表示されます。

今日の日付を表示するコード

コードは、Public Sub 練習()とEnd Sub内に記述します。練習()の部分はプロシージャ名(マクロ名)と呼ばれ、Accessではこの名前を指定することでこのプロシージャ内の処理が実行されます。

今日の日付を表示するコードを記述します。次のように記述してください。

msgbox date

※ 記述はすべて半角の小文字で入力します。

書き終えたらEnterキーを押すか、方向キーの下向き矢印を押します。

記述した文字の先頭が大文字に変換されたことを確認します。

◆ MsgBox Dateの意味

MsgBoxはMsgBox関数と呼ばれ、メッセージを表示するための関数です。

Dateは、Accessの組み込み関数で、本日の日付を返します。

よって、「今日の日付をメッセージとして表示しなさい」という命令になります。

MsgBox関数

書式)MsgBox(prompt[,buttons] [,title])

表示文字列(Prompt)
メッセージの内容であり省略はできません。複数行を設定する場合は、改行する位置に、vbNewLine、vbCrLf、またはchr(13) & chr(10)を挿入します。
ボタン書式(buttons)
表示するボタンの種類、使用するアイコンのスタイル、標準ボタンなどの定数、または値の合計値を指定します。省略した場合は、OKボタンのみで値は0となります。
タイトル(title)
メッセージボックスのタイトルバーに表示する文字列。省略した場合は、アプリケーション名が表示される。

※ MsgBox関数の引数には、使用するヘルプファイルの名前やヘルプファイルのコンテキスト番号の引数も指定できますが、一般的には省略される場合が多いです。

■ ボタンの種類
定数 ボタンの種類
vbOKOnly 0 [OK] ボタンのみ
vbOKCancel 1 [OK] [キャンセル] ボタン
vbAbortRetryIgnore 2 [中止] [再試行] [無視] ボタン
vbYesNoCancel 3 [はい] [いいえ] [キャンセル] のボタン
vbYesNo 4 [はい] [いいえ] ボタン
vbRetryCancel 5 [再試行] [キャンセル] ボタン
■ アイコンの種類
定数 ボタンの種類
vbCritical 16 警告アイコン
vbQuestion 32 質問アイコン
vbExclamation 48 注意アイコン
vbInformation 64 情報アイコン
■ 標準ボタン
定数 ボタンの種類
vbDefaultButton1 0 第1ボタンを標準ボタンにする
vbDefaultButton2 256 第2ボタンを標準ボタンにする
vbDefaultButton3 512 第3ボタンを標準ボタンにする
vbDefaultButton4 768 第4ボタンを標準ボタンにする

※ 標準ボタンとは、表示された時のボタンの既定値のことで、アクティブになっているボタンを指定します。


MsgBox関数の引数を指定します。
ボタンの種類は、OKボタンと情報アイコンを指定します。また、メッセージボックスのタイトルには「本日の日付」と表示します。
以下のように追加記述します。

※ 図では定数を記述していますが、「MsgBox Date, 0 + 64, "本日の日付"」のように値を指定することも可能です。0+64となっていますが、合計値64のみでもかまいません。

動作の確認

コードを記述してプロシージャの動作を確認します。
必ず、カーソルをプロシージャ内に移動しておくことが必要です。

ツールバーの[Sub/ユーザフォームの実行]ボタン、または[F5]を押して実行します。

メッセージが表示されます。本日の日付と情報アイコン、[OK]ボタンが1つ、そしてタイトルバーには「本日の日付」と表示されていることが確認できます。

[OK]ボタンをクリックして、動作を終了します。

MsgBox関数は戻り値も定数も取得することができます。戻り値はメッセージボックスで選択したボタンにより決まります。この戻り値を使って条件分岐の処理を行うことができます。
例えば、メッセージボックスで[はい]と[いいえ]のボタンを表示して、[はい]を押した時の処理と[いいえ]を押した時の処理を変えることができることで、ユーザの意図した決定事項で処理を分けることが可能となります。

戻り値は以下のような定数、または値となります。

定数 選択されたボタン
vbOK 1 [OK] ボタン
vbCancel 2 [キャンセル] ボタン
vbAbort 3 [中止] ボタン
vbRetry 4 [再試行] ボタン
vbIgnore 5 [無視] ボタン
vbYes 6 [はい] ボタン
vbNo 7 [いいえ] ボタン

例)「はいですか?いいえですか?」のメッセージに対して、ユーザが各ボタンに対応した場合の記述例です。MsgBox関数を使ってメッセージを表示させて、「はい」ボタンを押したら「はいを押しましたね」、「いいえ」ボタンを押したら、「いいえを押しましたね」のメッセージが表示されます。

  Sub YesNo()
	Dim Hengi As Integer
	Hengi = MsgBox("はいですか?いいえですか?", vbYesNo, "選択")
	If Hengi = vbYes Then
		MsgBox "「はい」を押しましたね"
	Else
		MsgBox "「いいえ」を押しましたね"
	End If
  End Sub
    	

この場合、定数「vbYes」の部分を「6」の値に書き換えても良いです。