【連載】#07 Access のVBA関数の戻り値とIfアクションでマクロの実行順序を制御する

【連載】#07 Access のVBA関数の戻り値とIfアクションでマクロの実行順序を制御する
【連載】#06 めんどくさい仕事を楽にするツールをAccess VBAを使ってどう作るのか

この記事では Microsoft Access のマクロ内 If アクションと VBA の関数プロシージャの戻り値との関係、autoexec マクロを定義した .accdb ファイルの編集方法について簡単に紹介します。

【連載】#07 Access のVBA関数の戻り値とIfアクションでマクロの実行順序を制御する
しらかば堂

いつも記事を読んで頂きありがとうございます~
今日の調子はいかがですか?

マクロの中の If アクション

【連載】#05 Access のVBA 関数はどうやってマクロから呼び出されるの?

の中で紹介した 04_01.accdb の中に記述されている autoexec マクロ の中身をもう少し細かく説明します。

【連載】#07 Access のVBA関数の戻り値とIfアクションでマクロの実行順序を制御する

この
 If  条件文 Then
 If 文の最後
は条件文の評価結果により 「If 条件文 Then 」の次に実行する アクション を決定するという、実行順番を制御する アクション の仲間です。

ただこの例では この 「If 条件文 Then」 If 文の最後の間に何もないので意味がよく分からないですよね。

それでは04_01.accdb を SHIFTを押しながらダブルクリック して立ち上げ後、新たに リボン 内の 作成 タブ、マクロ を順次クリックしてマクロビルダ画面 を起動して新しい マクロ を作ってみましょう。

マクロ 名を autoexec にした場合
普通に .accdb ファイルをダブルクリックするとこの マクロ自動実行するので
再編集のためにこの自動実行をさせたくない場合は
.accdb ファイルを SHIFTを押しながらダブルクリックして立ち上げます。

まず次の動画を何回かご覧ください。

見づらいときは画面をフルスクリーンにすることをお勧めします。

 

いかがでしたか?

ここで新しく作成した マクロ1 というマクロをデザインビュー(D) から マクロビルダ画面 を呼び出して確認すると以下のようになっています。

【連載】#07 Access のVBA関数の戻り値とIfアクションでマクロの実行順序を制御する

この例では

If 条件文 Then」 「Elseの間に
メッセージボックス (うまくいったみたいです,はい、なし,)

という アクション があり

Else 」 If 文の最後の間に「メッセージボックス (失敗しました,はい、なし,)

という アクション があります。

この場合、関数 VBA_Access_Sample の戻り値が 0 ならば、条件式は 0 = 0 となるので
メッセージボックス (うまくいったみたいです,はい、なし,)
という アクション が実行され、そのあとIf 文の最後までジャンプします。

反対に 関数 VBA_Access_Sample の戻り値が 0 以外(例えば 1 )ならば条件式 1 = 0  は となるので
まず「Else 」までジャンプして「メッセージボックス (失敗しました,はい、なし,)」を実行して
そのままIf 文の最後を実行してこの条件式を抜けます。

では改めて

【連載】#03-01 VBA のSubプロシージャとは? 関数(Functionプロシージャ)とは?

で定義された 関数 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 プロシージャ はそういった意味で役不足なので マクロ から呼び出せません。

【連載】#07 Access のVBA関数の戻り値とIfアクションでマクロの実行順序を制御する
みなみ

そういう訳だったのか~(笑)

まとめ

いかがでしたか?

今回は Access VBA を習得するうえで重要な マクロ のいくつかのアクションのうち

  • If アクション
  • Else アクション
  • メッセージボックス アクション

にフォーカスしてその内容を紹介しました。

またこの マクロ を作る作業の中で

  • autoexec マクロ を含む .accdb ファイル を修正する際には SHIFT キーを押した状態でファイルをダブルクリックする必要がある こと
  • マクロ の新規作成、修正は デザインビュー(D) から マクロビルダ画面 を起動して行うこと

を紹介しました。

さらにマクロVBA 内の プロシージャ を呼ぶときに何故 関数 でなければいけないのかの理由について紹介しました。

さてこの記事全体の目標は

  • 今の状況から抜け出してもっと前向きな仕事に取り組みたい
  • さっさと仕事を切り上げて充実したアフターファイブを過ごしたい

でしたよね。

あなたの解決したい問題は何ですか?

次回はまた

【連載】#08 CSVファイルをExcel経由でAccessのテーブルにインポートするには

Access VBA の新しい窓を開きましょう。


Microsoft Access 関連教材は次のリンクからどうぞ。

Access VBA 関連教材の紹介