フォームを作り、その上に2列×15個のテキストボックスを配置しました。(2列15行の「表」(ひょう)のような状態です。)
左列は入金関係、右列は出金関係金額を入力します。
一番下行のテキストボックス2つは各列の合計(入金合計・出金合計)を入れたいのです。
各列の、どれかのテキストボックスに値が入力されたら、即時にその列の合計を変えたいのです。
複数の(同種と仮定して)コントロールをグループ的にまとめて考えて、そのどれかにイベントが起こったことを捉える方法はあるのでしょうか。14×2個のテキストボックスのChangeイベントを書けば良いとかを思い付くのですが鬱陶しいのと、VBAプログラムのレパートリーを広げたくて、どなたか(不可能という結論も含めて)、ご存知の方は教えてください。
98・Access97・Access2000です。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

こんにちは。

maruru01です。

おそらくかなり面倒だと思いますが、レパートリーを広げたいということなので、紹介します。
ただし、本に載っていた(しかもVB)だけで、実際に私は試してないので本当に出来るかどうかわからないですが。

やり方ですが、フレキシブルグリッドを使用する方法です。
フレキシブルグリッドは、ツールボックスのその他のコントロールの中の
「Microsoft FlexGrid Control, version 6.0」
を選択して配置します。
このフレキシブルグリッドは、エクセルの表のようなデザインをしています。ただし、ユーザーが直接入力出来ません。
そこで、テキストボックスをグリッドのセルと同じ大きさで用意します。
そして、グリッドのEnterかGotFocusイベントで、
1.どのセルが選択されたかを取得
2.そのセルの上にかぶせるようにテキストボックスを移動
3.テキストボックスにフォーカスを移動
4.テキストボックスにセルの内容を代入
ここでユーザーがテキストボックスに入力し、テキストボックスからフォーカスが移動したらそのExitかLostFocusイベントに
5.テキストボックスの真下のセルにテキストボックスの値を入力
6.グリッドのセルの値(変更後)を元に再計算
仮にテキストボックスからEnterや矢印キーで移動したら、別のセルへ移動して、また1.から繰り返す。
こんな感じです。
要は、いくつ入力欄があっても、実際に入力するのは1箇所だけなので、そこにテキストボックスを持ってきて入力するということです。
細かいところはいろいろ調整しないといけないと思います。

おそらく、全部のテキストボックスのイベントを書く方が、簡単で早く出来ると思いますが、まあ、時間に余裕があったら試してみて下さい。
では。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ