• ベストアンサー

VBA テキストボックスで計算

VBAの勉強を始めたばかりで、見よう見まねで色々作っています。 ユーザーフォームのテキストボックスに、計算結果を表示したいのですが、行き詰まってしまいました。 textbox1 textbox2  .  .  textbox5 があり、textbox6に、1~5に入力された数字を足して、消費税額が出るようにしたいです。 例えば textbox1・・・100,000 textbox2・・・200,000 と入っていたら textbox6に 【消費税額 15,000円】 と表示させたいです。 textbox1~5は、1から順番に数字を入れていきますが、全てに入るとは限りません。 不足情報等がありましたら、ご指摘下さい。 ご教授の程、よろしくお願いします。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.5

>a = a + CLng(Me.Controls("TextBox" & i).Value) >こちらにしたところ、 >実行時エラー'13' 型が一致しません すみません、空白のTexBoxがある事を見落としていました。 ,を空白に置換えてみました。 Dim i As Long, a As Long For i = 1 To 5   a = a + Val(Replace(Me.Controls("TextBox" & i).Value, ",", "")) Next Me.TextBox6.Text = "消費税額 " & Format(a * 0.05, "#,##0円")

sunnn40893
質問者

お礼

何度もありがとうございます! こちらの式でもできました! とても勉強になりました。 感謝です。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 一応、Double 型で扱いますが、空白があると、CLngやCDble は、数値が入っていることを前提とするので、「""(長さ0の文字列)」は、エラーを発生します。Val関数は、「,(カンマ)」までの数字を拾います。だから、事前に、IsNumeric で区分けしなければなりません。 '------------------------------------------- Private Sub CommandButton1_Click() Dim i As Long Dim bSum As Double bSum = 0 For i = 1 To 5   If IsNumeric(Me.Controls("TextBox" & i)) Then     bSum = bSum + CDbl(Me.Controls("TextBox" & i))   End If Next i  TextBox6.Value = Int(bSum * 0.05) '切り捨ての場合  'TextBox6.Value = Int(bSum * 0.05 + 0.5) '切り上げの場合 End Sub

sunnn40893
質問者

お礼

おお~! できました! ありがとうございます。 大変勉強になりました。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

No.2です >例えば >textbox1・・・100,000 >textbox2・・・200,000 入力に , が入るのですね なら >a = a + Val(Me.Controls("TextBox" & i).Value)         ↓ a = a + CLng(Me.Controls("TextBox" & i).Value) に変更してください。

sunnn40893
質問者

お礼

度々、ありがとうございます。 a = a + Val(Me.Controls("TextBox" & i).Value) この式だと、200,000円のときは「10円」となってしまうんですね。 で、 a = a + CLng(Me.Controls("TextBox" & i).Value) こちらにしたところ、 実行時エラー'13' 型が一致しません と出てしまいました・・・。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

参考に Dim i As Long, a As Long For i = 1 To 5   a = a + Val(Me.Controls("TextBox" & i).Value) Next Me.TextBox6.Text = "消費税額 " & Format(a * 0.05, "#,##0円")

sunnn40893
質問者

お礼

早速のご回答、ありがとうございます!

noname#111860
noname#111860
回答No.1

例えば入力チェックの方法としては Dim nResultValue as Long nResultValue = 0 if Trim$(Textbox1.text) = vbNullString Then Call MsgBox("入力されていない") Elseif IsNumeric(Textbox1.text) = False Then Call MsgBox("数字ではない") Else nResultValue = nResultValue + CLng(Textbox1.text) End if というのをTextbox1~5まで繰り返して 最後に Textbox6.text = Cstr(nResultValue * 0.05) とすれば問題ないかと

sunnn40893
質問者

お礼

早速のご回答、ありがとうございます! 知らない単語がいっぱい・・・^^; 一つずつ、検証していきます。

関連するQ&A