Microsoft Access Club >VBA物語 >このページ >次頁 < 前項  サイト内検索


マクロとVBA : VBA物語05



フォーム上にあるコマンドボタンをクリックすると別のフォームが開く、このプロシージャは下記のように記述します。

Private Sub Cmd_コマンド_Click()

    DoCmd.OpenForm "frm_sample"  'frm_sampleフォームを開きます。

End Sub
解説

この命令文(プロシージャ)は、マクロのフォームを開くと同じ働きになります。

 

マクロとは

マクロは、Accessが事前に用意してくれた簡易なプログラム命令文の集まりです。例えば、フォームを開くというマクロアクションを実行すると、Access内部で直ちに、DoCmd.OpenForm…が実行されると考えて下さい。

マクロ内でフロー制御

あるVBAの解説書で、このような記述がありました。以下ちょっと引用してみます。

「マクロは少し凝った機能を実現するには力不足です。例えば、メッセージボックスを表示する機能はマクロでも実現できますが、表示できるメッセージボックスにはボタンが1つしか含まれません。[はい]ボタンや[いいえ]ボタンを含むようなメッセージボックスは、VBAでしか実現できません。 (以下省略)」

しかし、マクロは思ったより高機能で、このコメントは正確ではありません。マクロでも、[はい]ボタン、[いいえ]ボタンを含むある種のフロー制御は可能です。

ちょっと一服

VBAはプログラミング言語です。コンパイルを行うことで実行言語となります。この実行言語とは「マシン語」のことで、全てのプログラミング言語は、最終的にはこの「マシン語」によって動いています。

コンピュータは、一度に同時の処理をこなす事はできません。表面上、同時に動いているように見えますが、実は一つ一つ処理をこなしているんです。高速ですから判らないんですね。

VBAを眺めると、英文に近い形態であることが見て取れますが、コンピュータは英語を理解できません。何故なら、コンピュータは0と1だけしか判らないんです。

フロー制御マクロの作成方法
  1. マクロを以下のように記述します。
  2. マクロ名欄にメッセージボックスを配置します。
  3. 条件欄に以下の記述を行います。... は直近上位の条件と同じ条件であることを表します。
1<>MsgBox("マクロとVBAは違いますね?",17) ' --- 1行目
... ' --- 2行目
  1. アクション欄にメッセージボックス、2行目にマクロの中止、3行目にもメッセージボックスを配置します。
  2. MsgBox関数は[OK]ボタンをクリックすると数字の 1 を返します。
  3. 逆に、数字の 1 以外が返 えされるなら[いいえ]ボタンがクリックされたので、「マクロの休止」アクションを実行し 、以降の処理を中止します。

条件欄の...の意味

条件欄に、...(ドットが3個)を記述する時があります。これは、「上欄の行と同じ条件なら…」という意味です。 小さくてわかり難いですが・・・。

  • フロー制御を行った場合のメッセージボックス

  • 一般的なメッセージボックス

2004/04/01

ページの先頭へ 前ページへ戻る


マクロとVBA : VBA物語05


 

-Microsoft Access Club-