実は既に追加のプログラムは完成しているので、標準モジュールのSubプロシージャを呼び出すだけで済みます。
今回は新たに「イベントプロシージャ」というものが登場します。これまでのプロシージャとどこが違うのか、注意しながら読んでみてください。
【1】Accessのファイル「SampleDB020.mdb」を起動します。
【2】VBEを起動し、フォーム「F100Test」のモジュールを表示してください。
【3】フォームのモジュールに、何か書いてある場合は、最初の1行以外クリアしておいてください。
【4】左側のコンボボックスで、「▼」をクリックします。
【5】表示されたリスト(一覧)から、「cmdAdd」を選択します。
*フォームやフォーム上に配置したコントロールが、リストに表示される
【6】右側のコンボボックスで、「Click」を選択した瞬間に、コマンドボタンをクリック時のイベントプロシージャが、自動的に表示されます。
*まだ無い時は作成される
*既にある時は表示される
【7】あとは以下のように、イベントプロシージャの中に、プログラムを書くだけです。
Private Sub cmdAdd_Click()
Call test8.addData(99, "ハワイ")
MsgBox "追加完了"
End Sub
【8】ここまでの作業を「保存」してください。
【解説】
(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のコンボボックスで選択できるリストは、プロパティのイベントタブと対応しています。
したがって、VBEでイベントプロシージャを設定すると、プロパティにも反映されます。
プロパティの日本語をみれば、どんなイベントがあるのかわかります。それがVBEのリストでは、英語で表示されているだけです。
慣れてくると、プロパティからイベントを選択するより、今回のようにVBEのコンボボックスで選択したほうが楽です。