- ベストアンサー
VBAのテキストボックス計算についての質問
- VBA超初心者がテキストボックスの計算に関して教えてほしい。
- テキストボックス1、2、3の値を計算し、テキストボックス4に表示する方法を知りたい。
- テキストボックスの値が変化した場合の挙動についても教えてほしい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
フォームの場合はフォームのクラスモジュールに イベントプロシージャを記述します。 シートの方で待っていても何も起きませんよ。 イベントはフォーカス喪失時ではなく、更新後、 つまりAfterUpdateイベントで待ち構えます。 Private Sub TextBox1_AfterUpdate() 計算 End Sub 上記のようになります。
その他の回答 (1)
- nda23
- ベストアンサー率54% (777/1415)
先ず、イベントはフォーカス喪失時にすべきでしょう。 値の入力中に何度も計算するのは変でしょ? それと、TextプロパティよりValueプロパティを 使う方が正しい。桁数が大量な場合に値を取り 損なうことがあります。 Private Sub TextBox1_LostFocus() 計算 End Sub Private Sub TextBox2_LostFocus() 計算 End Sub Private Sub TextBox3_LostFocus() 計算 End Sub Private Sub 計算() Dim 値1 As String Dim 値2 As String Dim 値3 As String 値1 = TextBox1.Value 値2 = TextBox2.Value 値3 = TextBox3.Value If 値1 <> "" Then If Not IsNumeric(値1) Then MsgBox "TextBox1が非数値です", vbCritical TextBox1.SetFocus Exit Sub End If End If 'TextBox2、TextBox3も同様に作る TextBox4.Value = Val(値1) * Val(値2) + Val(値3) End Sub
お礼
ありがとうございます。 早速、使わせていただきました。 回答頂いた直後は、書いている内容の半分も理解できませんでしたが、 一つ一つ調べて、理解できるようになりました。 ありがとうございました。 ただ、申し訳ないのですが、もうひとつ質問してもよろしいでしょうか? 上記でご回答頂いたプログラムですが、エクセルシートでのプロジェクトでは うまく動くのですが、フォームに全く同じテキストボックスを置いて 行っても、全く動きません。 フォーカス喪失時でまず動いていないみたいです。 何か設定とかあるのでしょうか? ずうずうしく聞いてしまって申し訳ありませんがよろしくお願いします。
お礼
何度もお答えいただきありがとうございました。 おかげで、作業を進めることができました。 VBAはまだまだ初心者なのでまた質問させていただくことも あると思いますので、ぜひその時もよろしくお願いします。