• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAの計算について教えてください。)

VBAのテキストボックス計算についての質問

このQ&Aのポイント
  • VBA超初心者がテキストボックスの計算に関して教えてほしい。
  • テキストボックス1、2、3の値を計算し、テキストボックス4に表示する方法を知りたい。
  • テキストボックスの値が変化した場合の挙動についても教えてほしい。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

フォームの場合はフォームのクラスモジュールに イベントプロシージャを記述します。 シートの方で待っていても何も起きませんよ。 イベントはフォーカス喪失時ではなく、更新後、 つまりAfterUpdateイベントで待ち構えます。 Private Sub TextBox1_AfterUpdate() 計算 End Sub 上記のようになります。

vbavbavba
質問者

お礼

何度もお答えいただきありがとうございました。 おかげで、作業を進めることができました。 VBAはまだまだ初心者なのでまた質問させていただくことも あると思いますので、ぜひその時もよろしくお願いします。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

先ず、イベントはフォーカス喪失時にすべきでしょう。 値の入力中に何度も計算するのは変でしょ? それと、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

vbavbavba
質問者

お礼

ありがとうございます。 早速、使わせていただきました。 回答頂いた直後は、書いている内容の半分も理解できませんでしたが、 一つ一つ調べて、理解できるようになりました。 ありがとうございました。 ただ、申し訳ないのですが、もうひとつ質問してもよろしいでしょうか? 上記でご回答頂いたプログラムですが、エクセルシートでのプロジェクトでは うまく動くのですが、フォームに全く同じテキストボックスを置いて 行っても、全く動きません。 フォーカス喪失時でまず動いていないみたいです。 何か設定とかあるのでしょうか? ずうずうしく聞いてしまって申し訳ありませんがよろしくお願いします。

関連するQ&A