<HOME <お願い事項 <Access2002 TOP <Access97 TOP <サイト内検索 | ||
MS-Access2000--VBAの小屋>ADOとはなんや |
で、これはやらなくても大丈夫みたいなんですが、いちおう、細かい綴りの間違いとかもわかるので・・・。
「コンパイル」します。メニューバーの「デバッグ」→「コンパイル」を選んでください。
なーんも出なければ、プログラムとして認められたことになります。実行可能ってことです。
どっか黄色くなったりしたら、その部分に、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プロシージャだとこんなふうにして使うことができるんですね。
いかがでしょう。