スポンサードリンク

Access VBA イベントプロシージャを作成する方法。

VBA のプログラムを、フォームのモジュールに書いてみましょう。

実は既に追加のプログラムは完成しているので、標準モジュールのSubプロシージャを呼び出すだけで済みます。

今回は新たに「イベントプロシージャ」というものが登場します。これまでのプロシージャとどこが違うのか、注意しながら読んでみてください。


【1】Accessのファイル「SampleDB020.mdb」を起動します。


【2】VBEを起動し、フォーム「F100Test」のモジュールを表示してください。

access-vba-333.gif


【3】フォームのモジュールに、何か書いてある場合は、最初の1行以外クリアしておいてください。

access-vba-325.gif


【4】左側のコンボボックスで、「▼」をクリックします。

access-vba-326.gif


【5】表示されたリスト(一覧)から、「cmdAdd」を選択します。

access-vba-327.gif

*フォームやフォーム上に配置したコントロールが、リストに表示される


【6】右側のコンボボックスで、「Click」を選択した瞬間に、コマンドボタンをクリック時のイベントプロシージャが、自動的に表示されます。

access-vba-328.gif

*まだ無い時は作成される
*既にある時は表示される


【7】あとは以下のように、イベントプロシージャの中に、プログラムを書くだけです。

access-vba-331.gif


Private Sub cmdAdd_Click()
  Call test8.addData(99, "ハワイ")
  MsgBox "追加完了"
End Sub



【8】ここまでの作業を「保存」してください。

access-vba-332.gif


【解説】
(1)フォームやレポートのモジュールを、「クラスモジュール」と言います。


(2)クラスモジュールには、イベントプロシージャ以外に、Functionプロシージャ や Subプロシージャ を書くことができます。

また宣言といって、フォームの各プロシージャで共通して使う、変数や定数を書くことができます。(プロシージャの外に記述するだけ)


(3)イベントプロシージャとは、コマンドボタンをクリックした時、フォームを開いた時、といったイベント(出来事)が起こった時に、Accessから自動的に呼び出されるプロシージャです。(重要)

Functionプロシージャ や Subプロシージャ が、プログラムの中で、明示的に呼び出すのとは対照的です。


(4)イベントプロシージャは、自動的に呼び出されるため、フォームやコントロールなどのオブジェクト(物)によって、あらかじめイベントの種類が決まっています。


(5)イベントプロシージャ名は、あらかじめ決められていて、自由に付けることはできません。必ずコンボボックスから選択して表示します。

Private Sub cmdAdd_Click()
省略
End Sub

左のコンボボックスでオブジェクトを選択し、右のコンボボックスでイベントを選択します。既存のイベントプロシージャを表示する時も、手順は同じです。

絶対に手入力はしないでください。不具合の原因になります。入力するのは、イベントプロシージャの中だけです。


(6)イベントプロシージャ名を見れば、どのオブジェクトで、どんなイベントが発生した時に呼び出されるか、すぐにわかります。

cmdAdd_Click()
オブジェクト名_イベント名()


(7)イベントプロシージャの中では、標準モジュールのSubプロシージャを、引数を指定して呼び出しているだけです。

Call test8.addData(99, "ハワイ")
MsgBox "追加完了"

標準モジュールのSubプロシージャを呼び出しただけでは、処理の進捗状況がわからないので、最後にメッセージボックスを表示するようにしています。

もちろんメッセージボックスを表示しなくても、追加の処理に影響はありません。


【ワンポイント】
既に気付いた人もいると思いますが、VBEのコンボボックスで選択できるリストは、プロパティのイベントタブと対応しています。

access-vba-330.gif

したがって、VBEでイベントプロシージャを設定すると、プロパティにも反映されます。

access-vba-329.gif

プロパティの日本語をみれば、どんなイベントがあるのかわかります。それがVBEのリストでは、英語で表示されているだけです。

慣れてくると、プロパティからイベントを選択するより、今回のようにVBEのコンボボックスで選択したほうが楽です。

スポンサードリンク






Access VBA 初心者入門講座 TOPへ