<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000--VBAの小屋>ADOとはなんや
   1 2 3 4



で、これはやらなくても大丈夫みたいなんですが、いちおう、細かい綴りの間違いとかもわかるので・・・。
「コンパイル」します。メニューバーの「デバッグ」→「コンパイル」を選んでください。
なーんも出なければ、プログラムとして認められたことになります。実行可能ってことです。
どっか黄色くなったりしたら、その部分に、VBAのコードとして意味不明な記述などがあるよ、っていう意味になります。

大丈夫ですよね。

では、実行してみましょう・・・っていっても、どうすりゃいいのだ???

とりあえずこのプロシージャが正しく動くかどうか・・・のテストをするためには、イミディエイトウィンドウというのがお役立ちです。
メニューバーの「表示」の中にありますので、選んで表示させましょう。ウィンドウの大きさや位置は調節してください。

で、今作ったプロシージャの名前をそのまま入力すると・・・。



メッセージボックスの中に、レコード件数が返ってきます?
動きましたね!ばんざーい!



じゃ、メッセージボックスはOKボタンクリックして・・・またエディタに戻ってくると思います。
とりあえず、処理は正常に行われているようですね。よかった・・・。




でも、メッセージボックスじゃ・・・どっか、テキストボックスに件数表示させたりしたいですよねぇ。

ここからが、またちょっとややこしいお話で・・・。前に、SubプロシージャとFunctionプロシージャってのがあるよ、ってお話、しましたよね。
Subプロシージャというのは、順番に処理を行ってそのままさよならー感じで抜けていくプロシージャで、
Functionプロシージャは、なんか値を返してくる、いわゆる「関数」っていう種類のプロシージャになります。



じゃ、これをSubプロシージャじゃなくて、Functionプロシージャにすればいいんじゃん!
と、こんなことが許されるのかどうかわかりませんが・・・書き換えちゃいました。

どこを書き換えたか、わかります?
1行目のPublic SubのSubをFunctionって書き換えました。
すると、一番最後のEndSubもEnd Functionに変わったんです。かしこい〜。

で、メッセージボックスのとこで・・・。MsgBox Cnt を削除して、変わりに


N_Cnt = Cnt

と書き込んでやります。

このプロシージャ名そのものに、カウントした結果を代入します。

ループの中で直接N_Cntに1足してってもいいのかもしれませんけど、まあ、せっかくここまで書いたんだし。

いちおうコンパイルしましょうか。大丈夫だとは思いますが・・・おまじないみたいなもんですね。



で、今度はイミディエイトウィンドウの書き方もちょいと異なります。
ここに答えをよこしなさい、っていう書き方ができるようになるんですね。Functionプロシージャだと・・・。


ほれ。



では、とりあえずモジュールを保存しましょう。
上書き保存ボタンをクリックすると・・・。

こんなの出ますよね。

モジュールというのは、プロシージャを入れておく入れ物みたいなもんです。モジュール名を直接使うことはありませんけど、この中に作ったプロシージャを入れていくようなイメージになりますね。
だから・・・後でわかんなくなっちゃわなければ、名前はなんでもいいです。Module1でいいですよ。Module1の中に、N_Cntという名前のプロシージャをひとつ作ったことになります。





じゃ、フォームで使ってみましょうか。



なんか適当なテキストボックスをひとつ作って、コントロールソース欄に


=N_Cnt()


って入力します。
フォームビューに切り替えるか、フォームを一度閉じてもう一度開くと・・・。

件数、カウントした結果が出てますか?
Functionプロシージャだとこんなふうにして使うことができるんですね。

いかがでしょう。