Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7261 / 13645 ツリー ←次へ | 前へ→

【40261】ボタンは使わず表示(計算) てつじ 06/7/10(月) 11:39 質問[未読]
【40267】Re:ボタンは使わず表示(計算) Jaka 06/7/10(月) 13:18 回答[未読]
【40272】おまけ Jaka 06/7/10(月) 14:11 発言[未読]
【40271】Re:ボタンは使わず表示(計算) ichinose 06/7/10(月) 13:51 発言[未読]
【40274】Re:ボタンは使わず表示(計算) てつじ 06/7/10(月) 14:42 お礼[未読]

【40261】ボタンは使わず表示(計算)
質問  てつじ  - 06/7/10(月) 11:39 -

引用なし
パスワード
   先ほどは、皆様アドバイスをありがとうございました。
質問なんですが、現在はform上に横に42個、たてに4行の計168個のtextboxが配置してあり、box内に数値を打ち込み、別のtextboxに合計等表示させています。ボタン「集計」をクリックしたら表示させるようにしているのですが、ボタンをはぶいて、textboxに数値を記入すると同時に計算され別のtextboxに表示させることはできますか?
form自体にコードを打っても意味はないし・・・。どうすればよいですか?

【40267】Re:ボタンは使わず表示(計算)
回答  Jaka  - 06/7/10(月) 13:18 -

引用なし
パスワード
   全部のテキストボックスのExitイベントから計算コードを呼び出すか
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 計算
End Sub

Sub 計算()
 For i = 1 to 168
   計 = 計 + Controls("TextBox" & i).Value
 Next
 TextboxXX.value = 計
End sub

クラスを使うかですね。(クラスの取りあえずの見本)
http://www.vbalab.net/vbaqa/data/excel/log/tree_234.htm

【40271】Re:ボタンは使わず表示(計算)
発言  ichinose  - 06/7/10(月) 13:51 -

引用なし
パスワード
   こんにちは。

これ意外と厄介なんですよ、VBAでは・・・。

テキストボックスが5個や6個なら、
TextboxコントロールのExitイベント、または、AfterUpdateイベントで
合計計算を行うコードを記述すればよいでしょうが・・・。


テキストボックスが146個という沢山の個数だとどうしても

Exit、または、AfterUpdateイベントに同じようなコードを記述しなければ
なりません(想像するに100個ぐらいのテキストボックスのイベントに似たようなコードを記述することになるのではないか、と思います)。

これを簡潔なコードにするには、クラスモジュールを使用するという方法がありますが

(これは、過去ログで「クラスモジュール」で調べてください)、

残念ながら、ExitやAfterUpdateイベントはクラスでは使えません。

では、他のイベントとして、Changeイベントでは、
一文字入力するたびにイベントが発生してしまうので合計を求めるイベントとしては
不向きだと思います。が、てつじさんが試してみてこれでよければ、
第一候補はChangeイベントです。


他には、KeyDownイベントで計算させる方法が考えられます。
このイベントだとクラスでも使えるし、キー(Enterキー)が押された時に
イベントが発生しますから、計算のタイミングも良いのですが、
マウスでテキストボックスを移動してしまうとイベントが発生しません。

ね、帯に短し、襷に・・・でしょう?

で、私なら、

1 Spreadsheetコントロールを使うか

2 現状のボタンのクリックで計算という仕様にするか

3 独自の擬似Exitイベントを作ってしまうか

ですが、

全部、検討してみてください。


>先ほどは、皆様アドバイスをありがとうございました。
>質問なんですが、現在はform上に横に42個、たてに4行の計168個のtextboxが配置してあり、box内に数値を打ち込み、別のtextboxに合計等表示させています。ボタン「集計」をクリックしたら表示させるようにしているのですが、ボタンをはぶいて、textboxに数値を記入すると同時に計算され別のtextboxに表示させることはできますか?
>form自体にコードを打っても意味はないし・・・。どうすればよいですか?

【40272】おまけ
発言  Jaka  - 06/7/10(月) 14:11 -

引用なし
パスワード
   Private Sub TextBox1_AfterUpdate()
計算
End Sub

上記コードをセルA1:A3に貼り付け、A1:A3をセル選択して、
450行ぐらいまでフィル。

必要なテキストボックス番号までをコピーしてモジュールコピペ。

【40274】Re:ボタンは使わず表示(計算)
お礼  てつじ  - 06/7/10(月) 14:42 -

引用なし
パスワード
   みなさんありがとうございました。
クラスモジュールですか・・・。
少し自分なりに調べてみましたが、まだまだ理解するには時間がかかりそうなので、今回はとりあえず、ボタンをクリックということで我慢し、すこしづつ勉強していこうと思います。
ありがとうございました。

7261 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free