• ベストアンサー

テキスト × テキスト % 

画像のように txt本体価格 txt消費税 txt税込金額 コマンド6 を作りました。 コマンド6をクリックしたら  txt本体価格 × txt消費税 % の数値をtxt税込金額に表示させたいのですが Private Sub コマンド6_Click() Me.txt税込金額.Value = Me.txt本体価格.Value * Me.txt消費税 & "%" End Sub にすると、うまくパーセントされてません。 100×5%=5にしたいのに 100×5=100 になってしまいます。 VBAでコントロールの値にパーセントを掛ける方法をご教授ください。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

消費税率5%を掛けたものを計算する場合は、%をくっつけるのではなく、 消費税 = 本体価格 x (消費税率 ÷ 100) つまり、 消費税=Me!txt本体価格.Value * ((Me!txt消費税.Value) / 100) のように計算します。 質問内容は税込価格ですから、 税込価格 = 本体価格 x ( 1 + (消費税率 ÷ 100)) すなわち、 Me!txt税込金額 = Me!txt本体価格.Value * (1 + ((Me!txt消費税.Value) / 100)) のようにします。 また、以下のような対応も必要かもしれません。 たとえば、 199x1.05=208.95 183x1.05=192.15 このような場合小数点以下をどうするかによって やりかたが違ってきます。 (1) 小数点以下切捨ての場合。 Me!txt税込金額 = Int(Me!txt本体価格.Value * (1 + ((Me!txt消費税.Value) / 100))) (2) 小数点以下四捨五入の場合。 以下のコードを標準モジュールに貼り付け保存します。 Function funcSG(ByVal x As Long) As Long If x >= 0.5 Then funcSG = 1 Else funcSG = 0 End If End Function 次に質問のボタンクリック時の中身を、 Me!txt税込金額 = Int(Me!txt本体価格.Value * (1 + ((Me!txt消費税.Value) / 100))) + funcSG((Me!txt消費税.Value) / 100) のようにします。 ほかにもマイナスの場合の対応とかも ありますが、一応質問の範囲を越えるので ここまでにします。

cdbvtnyjv4
質問者

お礼

%をくっつける事はできないのですね。いろいろなパターンありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

>%をくっつける事はできないのですね。 もし消費税(消費税というよりもこの場合は消費税率)を 表示するtxt消費税のところに%を表示しておきたいのならば、 テキストボックスの中ではなくテキストボックスの後ろに ラベルを設定し、それに%を入れて保存すればいいのではと 思いますが。テキストボックスの長さを小さくして設定 すれば見た目もいいのでは思います。 わざわざテキストボックスの中に入れ込む必要はないように 思いますが。 また、それぞれのテキストボックスのプロパティで、 「文字配置」を「右」にすれば数値の位取りが見やすい のではと思います。

cdbvtnyjv4
質問者

お礼

ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A