アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAの勉強を始めたばかりで、見よう見まねで色々作っています。

ユーザーフォームのテキストボックスに、計算結果を表示したいのですが、行き詰まってしまいました。

textbox1
textbox2
 .
 . 
textbox5
があり、textbox6に、1~5に入力された数字を足して、消費税額が出るようにしたいです。

例えば
textbox1・・・100,000
textbox2・・・200,000
と入っていたら
textbox6に
【消費税額 15,000円】
と表示させたいです。

textbox1~5は、1から順番に数字を入れていきますが、全てに入るとは限りません。

不足情報等がありましたら、ご指摘下さい。

ご教授の程、よろしくお願いします。

A 回答 (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円")
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/09/24 14:27

こんにちは。



一応、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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/09/24 14:23

No.2です


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

度々、ありがとうございます。

a = a + Val(Me.Controls("TextBox" & i).Value)
この式だと、200,000円のときは「10円」となってしまうんですね。

で、
a = a + CLng(Me.Controls("TextBox" & i).Value)
こちらにしたところ、
実行時エラー'13' 型が一致しません
と出てしまいました・・・。

お礼日時:2009/09/24 13:42

参考に


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円")
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/09/24 13:39

例えば入力チェックの方法としては



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)
とすれば問題ないかと
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/09/24 13:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています