この記事では Microsoft Access のマクロ内 If アクションと VBA の関数プロシージャの戻り値との関係、autoexec マクロを定義した .accdb ファイルの編集方法について簡単に紹介します。
マクロの中の If アクション
の中で紹介した 04_01.accdb の中に記述されている autoexec マクロ の中身をもう少し細かく説明します。
この
If 条件文 Then
If 文の最後
は条件文の評価結果により 「If 条件文 Then 」の次に実行する アクション を決定するという、実行順番を制御する アクション の仲間です。
ただこの例では この 「If 条件文 Then」 と 「If 文の最後」の間に何もないので意味がよく分からないですよね。
それでは04_01.accdb を SHIFTを押しながらダブルクリック して立ち上げ後、新たに リボン 内の 作成 タブ、マクロ を順次クリックしてマクロビルダ画面 を起動して新しい マクロ を作ってみましょう。
マクロ 名を autoexec にした場合
普通に .accdb ファイルをダブルクリックするとこの マクロ が自動実行するので
再編集のためにこの自動実行をさせたくない場合は
.accdb ファイルを SHIFTを押しながらダブルクリックして立ち上げます。
まず次の動画を何回かご覧ください。
見づらいときは画面をフルスクリーンにすることをお勧めします。
|
いかがでしたか?
ここで新しく作成した マクロ1 というマクロをデザインビュー(D) から マクロビルダ画面 を呼び出して確認すると以下のようになっています。
この例では
「If 条件文 Then」 と 「Else」の間に
「メッセージボックス (うまくいったみたいです,はい、なし,)」
という アクション があり
「Else 」 と 「If 文の最後」の間に「メッセージボックス (失敗しました,はい、なし,)」
という アクション があります。
この場合、関数 VBA_Access_Sample の戻り値が 0 ならば、条件式は 0 = 0 で 真 となるので
「メッセージボックス (うまくいったみたいです,はい、なし,)」
という アクション が実行され、そのあと「If 文の最後」までジャンプします。
反対に 関数 VBA_Access_Sample の戻り値が 0 以外(例えば 1 )ならば条件式 1 = 0 は 偽 となるので
まず「Else 」までジャンプして「メッセージボックス (失敗しました,はい、なし,)」を実行して
そのまま「If 文の最後」を実行してこの条件式を抜けます。
では改めて
で定義された 関数 VBA_Access_Sample のコーディングをもう一度見てみましょう。
Function Access_VBA_Sample() As Integer
MsgBox "友達とお茶したい!"
Call access_vba_sample_03_02()
Access_VBA_Sample = 0
End Function
感の良い方は気が付かれたでしょうか。
この 関数 の 定義終了を示す「End Function」ステートメントの前に
「Access_VBA_Sample = 0」というステートメントで
関数 Access_VBA_Sample の戻り値に 0 をセットしていますよね。
これは何のためでしょうか。
それは VBA の中で定義した関数 Access_VBA_Sample の
戻り値 で マクロ 側の If アクションでその後の アクション の実行順序を制御したいからです。
逆に言えば 戻り値 を返さない Sub プロシージャ はそういった意味で役不足なので マクロ から呼び出せません。
そういう訳だったのか~(笑)
まとめ
いかがでしたか?
今回は Access VBA を習得するうえで重要な マクロ のいくつかのアクションのうち
- If アクション
- Else アクション
- メッセージボックス アクション
にフォーカスしてその内容を紹介しました。
またこの マクロ を作る作業の中で
- autoexec マクロ を含む .accdb ファイル を修正する際には SHIFT キーを押した状態でファイルをダブルクリックする必要がある こと
- マクロ の新規作成、修正は デザインビュー(D) から マクロビルダ画面 を起動して行うこと
を紹介しました。
さらにマクロが VBA 内の プロシージャ を呼ぶときに何故 関数 でなければいけないのかの理由について紹介しました。
さてこの記事全体の目標は
- 今の状況から抜け出してもっと前向きな仕事に取り組みたい
- さっさと仕事を切り上げて充実したアフターファイブを過ごしたい
でしたよね。
あなたの解決したい問題は何ですか?
次回はまた
で Access VBA の新しい窓を開きましょう。
Microsoft Access 関連教材は次のリンクからどうぞ。
いつも記事を読んで頂きありがとうございます~
今日の調子はいかがですか?