<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000--VBAの小屋>「イベント」に慣れる
   1 2 3 4 5



とにかく、各種コントロールの「イベントプロパティ」を中心にいろいろ知識を深めていくと、こまごまいろんなことができるってところ、見ていただけるんじゃないかと思います。ちょっとしたことばかりですけどね。

ちょっとだけ寄り道しましょうか。っていうか、今までも全部寄り道みたいなことばっかりやってきましたけど(笑)
テキストボックスとかオプションボタンとか、いわゆる「ツールボックス」の中から作ることができるコントロールに関しては、どういうイベントがあってそれらがどういう動きをするのか、ヘルプを参照することもできるし使用例も載ってます。調べるためにはF1、でしたよね。

ツールボックスの中以外のところから、ちょっと特殊なコントロールを作ることも・・・みなさんありえますでしょうか。そうなると、とたんに情報が少なくなって、ヘルプもなかったりして、手探り状態になることもあります。多分、すぐ役に立つ技術ではないと思いますけれど、もし同じようなことを試すことができそうでしたら、試してみてください。

まず、ふつうのコントロール・・テキストボックスをひとつ作ってみてください。わたしのはテキスト7になりました。
んでもって・・・ツールボックスの右下、トンカチみたいな絵のツールボタンをクリックしてみてください。
まだ一度もこのボタン触ったことないという方は、メニューが表示されるまで少し時間がかかるかもしれません。

皆さんパソコンの中で・・・利用することのできるコントロールの一覧が出てきます。


この辺が、Windowsのすごいトコなのか怠慢なトコなのかややっこしいトコなのか・・・。いろんな開発ツールで使うことのできるコマンドボタンとかテキストボックスみたいないわゆる「コントロール」ってやつが、いろんなところでクロスして扱えるような仕組みになってきてるんです。もちろん、Accessからも、よそのメーカーから出てるものとか、扱わせてもらえるんですよ。その代わり、ちゃんとしたヘルプとかガイドは、ないよ、ってことなんですけどね・・・。

わたしはたまに、SpinButtonっていうのと、Sliderっていうのを使うんです。使ったからどうなるってもんでもないんですけど、なんか楽しいので(笑)

←これ、Slider

SpinButtonっていっても、Microsoft以外の会社のソフトにくっついてきてるコントロールがあったりしますんで(Justsystemとかのがあったりする)気をつけないといけないんですけれど、こんなふうに、Accessの中にあらかじめ用意されているコントロール(ツールボックスから作るやつ。テキストボックスとかコマンドボタンとか)以外で、扱うことができるようになっているコントロールのことを総称してActiveXコントロールと呼んでます。Access95では、OLEコントロールとか呼んでたやつとほぼ同じと思っていただいてよいと思います。

みなさんのPCでも、使える状態になってるかな・・・。一覧、出てきました?
この一覧にどういうものがどういう順番で出てくるか、は、皆さんのPCにどういうソフトが導入されているのか、っていうことにかかわってきます。Accessだけ単品で買って導入している人と、MS-Office2000を買って標準インストールしている人では、多分ここに出てくるものって少々違ってきてるんじゃないかなって思います。
そんなわけでよそのものなので、Accessの中には使い方のガイドとかプロパティの説明とか、ほとんどないんです。
まあー・・・そんなもん好んで使わないほうがいいんでしょうけれど・・・何事も向学心です。どんなもんか、ちょっと使ってみましょう。

中に、Microsoft Slider Controlっていうの、あります?
ないようでしたら、ご縁がなかったってことで・・・。以下はお話だけ。
あったら、作ってみてください。
わたしのは、「ActiveXコントロール10」って名前になりました。

マウスでドラッグして広げたり狭めたりすると、メモリの感覚が広くなりますよね。
お好きな大きさに調節してください。こんなんで好きも嫌いもないと思いますが・・・。
スライダーを動かしたら、テキスト7の数値が増えたり減ったり・・・って感じの動きを作りたいなって思うんですけど・・・。

さて・・・こいつのプロパティを見てみると、大したプロパティないんですよ。しかも、F1押しても、大した説明も出てきません。
Accessのコントロールじゃないから・・・。ActiveXの開発ガイドかなんか買ってきて読め、ってことなんでしょう。

「更新時」かなぁ・・・。
じゃあ、更新時のイベントを作ってみましょうか。

・・・こんな感じかなぁ・・・。


・・・・・。
スライダーをドラッグしても、何も起こらないですね・・・。

「更新時」じゃなさそうだなぁ。
そんなときはもう、手探り体当たりでいろいろ試してみます。
VBAエディタの画面で、ActiveXコントロール10のところにカーソルがある状態だと、右上に、「このコントロールで使用できるイベント」の一覧が出せるんです。
もうここをみて片っ端から試してみるしかないのだ。


んー・・・
「スクロール時」ってのが、なんか使えそうかも・・・。これ、選んでみましょう。


↓と、なんかプロシージャが新しくできたと思いません?

ではー・・・そこに処理を・・・。と、まあこんな感じでとにかくいろいろやってみるのです。。。VBAを使うって、とにかく全部手作りなので、ひとつひとつ試してみる、作ってみる、やってみる、の繰り返しなんです。

答え書いちゃいますね。スライダーコントロールは、内部に値は持ってるんですけど、表には出さないんですね。どっかテキストボックスとかに値を代入して使うのが普通じゃないかと思います。で、その値なんですが、Valueというプロパティの中に持ちます。だから、

Me!テキスト7 = ActiveXコントロール10. Value

と書いてやる必要があるんです。

もうそしたら、「更新時」のイベントなんかいらないから、消しちゃいましょう。余分なものが残らないよう、Private SubからEnd Subまできれいさっぱり消しちゃってください。



どうでしょう。テキストボックスの中に、スライダーの値が入りますか?

時にはこうやって、手探りで探し当てていかないとならないこともあるんですよ。とにかくいろいろやってみないことには始まらないって感じですね。