<HOME  <お願い事項  <Access2000 TOP   <Access97 TOP   <サイト内検索
  Ac2002--VBAの沼 > 基本用語その1

基本用語その1

よく登場する用語などについて、簡単におさえておきましょうか。
こういった用語には、ある程度慣れが必要だと思います。なかなか、とっつきにくいもんもありますしね。
何回かおさらいしながら進めますんで、今回はざっと概略だけつかんでってください。



プロシージャ

ひとつの処理をするために作られた、プログラム。VBAで言うところの、処理の最小単位みたいなもんです。
突き詰めて考えると・・・最終目的はこの「プロシージャ」を作成することなんですわね。
まあ・・・そうだな、プロシージャのことを「プログラム」と思っちゃってもいいかもしれません。
こいつを作って、うまいこと動かすことで、何かしらやらかそう、と、そういうことです。



モジュール

プロシージャをまとめて入れておくためのオブジェクトです。



Visual Basic Editor

VBAのコードを入力するための専用エディタです。



PrivateプロシージャとPublicプロシージャ

MS-Accessの中で使うVBAは、MS-Accessの各オブジェクト等々を操作するために使います。
特に、フォームやレポートと密接なつながりを持ちます。
つながりというか、フォームからプロシージャを動かしたり、レポート印刷するときにいっしょに動くようにしたり、そうやって使うことが多いわけです。
そこで、プロシージャには「そのフォーム、そのレポート特有のプロシージャ」と、「そのmdbファイルの中ならどこでも自由に使える共通プロシージャ」の2種類があります。前者をPrivateプロシージャといい、後者をPublicプロシージャと言ったりなんかします。



Privateプロシージャ

「フォームAのボタンBをクリックしたときに動くプロシージャ」みたいな感じ。
「フォームAの中で動くためだけに作られた、フォームA専用のプロシージャ」です。プライベートですからね。




Publicプロシージャ

モジュールというオブジェクトの中作成されたプロシージャ。
必要に応じて呼び出して使う。呼び出す、なんて言うとなんかプロっぽい感じがして気分がよかったりする。
皆さんもご一緒に。「必要に応じて呼び出して使うのがPublicプロシージャか」。うん、いい感じ。


PrivateだろうがPublicだろうが、VBAのコードの書き方は大して違わないんですけども、違うものなんだと思っといたほうが間違いはないです。

たとえば、「あずま屋のA定食って、いくらだっけ?」と聞かれてたら、どうします?よく聞かれますよね。聞かれます。
「あずま屋のA定食」で通じるのが、Privateプロシージャ。
「日本の東京の葛飾区の東水元4丁目の角の交差点にある定食屋あずま屋のお昼限定の豚キムチ定食」と逐一言わなきゃならないのがPublicプロシージャ。

「日本の東京の葛飾区の東水元」付近に住んでいる人なら、「あずま屋」だけで通じるだろうけど、多分、渋谷駅の前とかで通りすがりの人に聞いても、「はあ?あずま屋?どこの?道玄坂の?あそこ定食なんてあったっけ?」って、別のあずま屋の話になっちゃうかもしれません。

この聞き方では、「日本の東京の葛飾区の東水元」限定になります。予め、「日本の東京の葛飾区の東水元」でしかこの質問をしないことが分かっているなら、手身近に聞けたほうがいいですよね。でも、「日本の東京の葛飾区の東水元4丁目の角の交差点にある定食屋あずま屋のお昼限定の豚キムチ定食はいくらだかご存知ですか?」と聞けば、少なくとも他の店と間違えられたりはしない。聞くのは大変ですけど、世界のどこに行っても会話は通じます。これが、Public(公の、一般の、公共の)プロシージャ、ということになります。

そのフォーム、そのレポートでのみの処理なら、Privateプロシージャを作成することが多いです。

でも、フォームが10個あって、どのフォームでも同じ処理をやりたい場合は、なんか無駄っぽい感じがします。
Publicプロシージャを一つ作っておいて、それぞれのフォームから呼び出すようにしたほうがいいでしょう。
というわけで、状況と場合によってこのふたつの使い分けをします。
っていうか、自動的に使い分けられてるもんなんで、実際のところは「どっちを作ればいいんだっ」なんて悩む必要はナシです。



SubとFunction

プロシージャには、処理の進め方といいますか、結果をどう出すか、によって、種類があります。
   あれやって
   これやって 
   それやって
   おしまい
というのが、Subプロシージャ。

   あれに10足して、
   それを2倍にして
   答えは48でーす
といって、48という答えをはじき出すのが、Functionプロシージャです。

と、言葉で説明してもなんかピンとこないもんなんですけど・・・。

順々に処理を実行して終了するのがSubプロシージャで、なんか計算とかさせて何かしら答えを得るために実行するのがFunctionプロシージャです。
これはちょっと意識していかないといけないことかな・・・徐々に理解していきましょう。



コンパイル

VBAの場合、エディタにソースコードを書いて、プロシージャを実行するときに、自動的に必要なコンパイルをしてくれます。
なので、普段はあんまり「コンパイルしなくちゃ!」とか、気にする必要はナシです。
でも、できれば、ソースコードの入力が完了したら自分でコンパイルしてみるようにしましょう。
書き方の間違いとかは、コンパイルすればある程度拾えますからね。これも、後でお話していきます。



イベント

これが当面、一番重要です。これに慣れないと、MS-AccessのVBAは使いもんになりません。

VBAで作成したプロシージャは、ほっといたらいつまでたっても実行されません。

プロシージャの処理の内容とおなじくらい大切なのが、そのプロシージャを「いつ実行するか」・・・実行のタイミング。これがとっても大切なんです。
VBAみたいな言語を動かすソフトとかツールとかって、だいたい同じようなもんなんですが「イベント駆動型(イベントドリブン型)」という考え方を持ってます。
「毎朝8時にプログラム実行」とかいうんじゃなくて、「ボタンをクリックしたら」とか「フォームを開いたときに」とか「テキストボックスに何か入力した後に」とか「レポートを印刷するときに」とか、なんかしらやらかしたときにプロシージャが動く・・・というプログラムの書き方といいますか、まあ、そんなとこです。ハハハ。

たとえば、フォームを開くときにフォームを閉じるコードを書いたら、そのフォームは永遠に開きません。

適切なところで動かさないと、意味がなくなっちゃうわけです。
この「イベント」ってもんの感じをつかめないことには、多分どうしようもないです。
でも、なかなかイメージ掴みにくいっちゃー掴みにくいもんなんですよ、この、イベントって奴は・・・。



そんなわけで

そんなわけで、VBAを習得するための第1歩としては、

  ・とりあえずPrivateプロシージャをいくつか作って、基本的なパターンを理解する
  ・イベントってものを理解する
  ・VBE(エディタ)の使い方に慣れる 

この3つが目標かな、と思います。