イベントの概念とは?(その1)
 
さて、フォームとイベントとVBAの関係、そしてVBAで何かの処理を作るために使うエディタの基本的な使い方は理解できたでしょうか。
 
VBAを使うときは「何かをした時、何かが動く」という感じの処理の作り方になります。
こういうのを「イベント駆動型」または「イベントドリブン型」の処理、といいます。
 
VBAで処理をつくるときには、「何を」「どうした時」「どうする」という3つの事柄を考えなければいけません。
フォームやコマンドボタン、テキストボックスなどには必ず「イベントプロパティ」が用意されています。
VBでは作成したプログラムの一単位をプロシージャと呼びます。
「コマンドボタンをクリックしたとき」「テキストボックスの値が更新されたとき」などの特定のイベントに応じて実行されるプロシージャを「イベントプロシージャ」といいます。
下の例でいうと、「コマンド0_Click」と「テキスト1_AfterUpdate」がイベントプロシージャということになります。
 
 
イベントプロシージャの名前は、「オブジェクト名_イベントの英語表記」のようにVBが自動で設定します。
 
ところで「Private Sub」とはどういう意味でしょうか。
プロシージャはVBAの世界では2種類あります。
「Functionプロシージャ」と「Subプロシージャ」です。
上の例はSubプロシージャのようですね。
 
Subプロシージャは「処理を実行するけれど、実行結果を呼び出し元に返さない」
Functionプロシージャは「通常関数と呼ばれ、計算結果などの処理の実行結果を呼び出し元に返す」
 
というように、どちらかというとコンピュータ側の都合から二つにわけられています。
Functionプロシージャが返す結果は「戻り値」と呼ばれます。
 
では、関数、って何でしたっけ?
Date関数とかMsgBox関数とかですね。これがいわゆる「Functionプロシージャ」なんです。
例えば「Date()」とすると今日の日付けを返してくれます。
これは「Date」という「Functionプロシージャ」に「Date()」が入力されたらシステムから今日の日付けを取得するという処理が書かれているということなのです。
 
では先頭のPrivateは何でしょうか。
Date関数やMsgBoxは、クエリやマクロなどいろいろなところで使うことができますね。
でも前に作った「コマンド0_Click」というSubプロシージャは別のフォームやクエリの中で書いても動かないのです。
 
Privateというのはこのフォームの中でしか識別されないプロシージャの先頭につきます。
もうちょっと正確にいうと、「プロシージャが保存されているモジュールの中だけで利用できるプロシージャ」ということになります。モジュールとは、VBで作成したプログラムを管理する入れ物です。この「コマンド0_Click」というSubプロシージャは、あるモジュールの中に作成されており、そのモジュールは特定のフォームでのみ動作することになっています。このようなモジュールをクラスモジュールと呼びます。
 
では、右端の「()」はなんでしょう?
Date関数の場合は単に今日の日付けを獲得するだけですが、MsgBox関数の場合はただMsgBoxと打っても何も出てきませんよね。
どういうメッセージを載せたいか、メッセージの種類は…等、補助情報が必要になります。
このようなとき、プロシージャは、そのプロシージャを実行するときに必要となる補助情報を、実行するときにその都度引き渡すことができるようになっています。
それが右側のカッコの中身です。これを「引数」と呼びます。
必要の無い場合はからっぽにしておいて結構です。
 
次のページでは、実際に簡単な処理を作成してみます。がんばりましょう!
 
 

 

 
 
(C)1999-2003 BE CORPORATION All rights reserved.Terms of Use. Privacy Policy.