- ベストアンサー
Access VBAでイベントを捉える方法とは?
- AccessのVBAを使用してフォームに配置したテキストボックスのイベントを捉えたい場合、値が入力された時に即座に合計を変更する方法があります。
- 複数の同種のコントロールをグループ的にまとめて考えることで、いずれかのテキストボックスでイベントが発生したことを検知することができます。
- Changeイベントを利用して一つ一つのテキストボックスに対して処理を書くこともできますが、VBAプログラムのレパートリーを広げるためには他の方法を考える方が良いかもしれません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 おそらくかなり面倒だと思いますが、レパートリーを広げたいということなので、紹介します。 ただし、本に載っていた(しかもVB)だけで、実際に私は試してないので本当に出来るかどうかわからないですが。 やり方ですが、フレキシブルグリッドを使用する方法です。 フレキシブルグリッドは、ツールボックスのその他のコントロールの中の 「Microsoft FlexGrid Control, version 6.0」 を選択して配置します。 このフレキシブルグリッドは、エクセルの表のようなデザインをしています。ただし、ユーザーが直接入力出来ません。 そこで、テキストボックスをグリッドのセルと同じ大きさで用意します。 そして、グリッドのEnterかGotFocusイベントで、 1.どのセルが選択されたかを取得 2.そのセルの上にかぶせるようにテキストボックスを移動 3.テキストボックスにフォーカスを移動 4.テキストボックスにセルの内容を代入 ここでユーザーがテキストボックスに入力し、テキストボックスからフォーカスが移動したらそのExitかLostFocusイベントに 5.テキストボックスの真下のセルにテキストボックスの値を入力 6.グリッドのセルの値(変更後)を元に再計算 仮にテキストボックスからEnterや矢印キーで移動したら、別のセルへ移動して、また1.から繰り返す。 こんな感じです。 要は、いくつ入力欄があっても、実際に入力するのは1箇所だけなので、そこにテキストボックスを持ってきて入力するということです。 細かいところはいろいろ調整しないといけないと思います。 おそらく、全部のテキストボックスのイベントを書く方が、簡単で早く出来ると思いますが、まあ、時間に余裕があったら試してみて下さい。 では。