質問: Excel VBAのフォームについて ユーザーフォームにテキストボックスを2つ配置し、それぞれに数字を入力
回答: 原因はVal関数ですね CCur等のデータ型変換関数を使用しましょう 但し、CCur関数は、長さ0の文字列ではエラーが発生するので On Error Resume Nextを使うか 例 Private Sub TextBox2_Change() On Error Resume Next TextBox2 = Format(TextBox2, ["#,##0;-#,##0"]) Worksheets("計算書").Range("M58") = CCur(TextBox2.Value) + CCur(TextBox3.Value) End Sub 実行時エラーを回避するユーザー定義関数を作成して使いましょう 例 Private Sub TextBox2_Change() TextBox2 = Format(TextBox2, ["#,##0;-#,##0"]) Worksheets("計算書").Range("M58") = CCurEx(TextBox2.Value) + CCurEx(TextBox3.Value) End Sub '標準モジュールに以下のコード Public Function CCurEx(ByVal strText As String) As Currency strText = Trim(strText) If Len(strText) = 0 Then CCurEx = 0 Else CCurEx = CCur(strText) End If End Function CCur関数は桁区切りの「,」があっても正しく変換されますが、 桁区切りとして認識する文字はコントロールパネルの設定に依存するので覚えておいて下さい 詳細はCCur関数のヘルプを参照