- ベストアンサー
エクセルで税抜き価格を入れて自動的に税込み価格に変換させたい
エクセルでセルに税抜き価格を入力したら、自動的に税込価格に 変換されるようにするにはどうすればいいのでしょうか? よろしくお願い致します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 補足質問の件ですが、こういう意味です。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Address = "$B$2" And IsNumeric(Target.Value) Then Target.Value = Int(Target.Value * 1.05) End If Application.EnableEvents = True End Sub このコードを以前の解説に従って貼り付けてください。 (注意) この例では、B2セルに値を入れた場合のみ税率をかけるように 記述されています。 余談ですが、 もし、B列のどのセルでも税率計算したい場合は、 Target.Address = "$B$2" の部分を、例えば Target.Column = Range("B1").Column に置き換えてください。 以下は、税率なども変数にした場合です。 興味があれば参考にしてください。 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ErrorTrap Dim TaxRate As Single Dim Col As String TaxRate = 5 '税率5% Col = "B" 'B列に適応 If Selection.Count > 1 Then Exit Sub Application.EnableEvents = False If Target.Column = Range(Col & 1).Column And IsNumeric(Target.Value) Then Target.Value = Int(Target.Value * (100 + TaxRate) / 100) End If Application.EnableEvents = True Exit Sub ErrorTrap: Application.EnableEvents = True MsgBox "エラー番号:" & Err.Number Resume Next End Sub
その他の回答 (5)
- ka_na_de
- ベストアンサー率56% (162/286)
どなたも追加回答されないようなので、 横やりの私が回答します。 1)下のシート名のタブの上で右クリック 2)「コードの表示」をクリック 3)左側のプロジェクトエクスプローラーで、 VBAProjectの中に複数のシートがあると思いますが、 今、自動で税込価格を表示させたいシートをダブルクリック (プロジェクトエクスプローラーが表示されていなければ、 上部の「表示」メニューから選択表示できます。) 4)右側にコードを貼り付けます。 実行は、税抜き価格を入力確定すれば自動的に行われます。 コードは#1のmshr1962さんのものをコピーされると思いますが、 #3のzap35さんの指摘のように、 Application.EnableEvents = False 処理の記述 Application.EnableEvents = True を追加したほうが良いと思います。 これを記述しておかないとイベントが多重に発生し、 無限ループに陥る可能性があります。 この説明で分からなければ追加で補足してください。
補足
丁寧に教えていただいてありがとうございます。 1)から4)までコードを貼り付けるところまではできたのですが、 その後に Application.EnableEvents = False 処理の記述 Application.EnableEvents = True の追加ですが、どの部分の後に記述すればいいのでしょうか? 処理の記述も入れるのでしょうか? 本当に何も知らないのにマクロを使おうとするものだから・・・ 申し訳ありませんが、またよろしくお願い致します。
- ka_na_de
- ベストアンサー率56% (162/286)
こんにちは。 回答は既に出ています。 質問とは直接関係ない余談ですが、 消費税は今後上昇する可能性があります。 税率5%は、変数(またはセル絶対参照)にしておいた 方がいいですよ。
- zap35
- ベストアンサー率44% (1383/3079)
>自動的に税込価格に変換されるようにする とは入力したセルの値を直接1.05倍するのですか? それとも別のセルに表示するのでも良いですか? 後者であればA1に税抜き額を入力して =ROUND(A1*1.05,0) 小数点以下1位を四捨五入 =ROUNDDOWN(A1*1.05,0) 〃 を切り捨て で求めることができます 前者であれば#01さんの言われるようにマクロが必要になります。 ただ#01さんのマクロには、2行追加がいるかもしれません Application.EnableEvents = False 処理の記述 Application.EnableEvents = True
補足
ご回答ありがとうございます。 入力したセルの値を直接1.05倍にするほうですので マクロを使えばできるのですね。 でもマクロの使い方がわかりませんので 困っています。
=ROUNDDOWN(A1*1.05,0)
補足
ご回答ありがとうございます。 他の方の回答からマクロを使えばできるそうですが マクロの使い方がわかりませんので 困っています。
- mshr1962
- ベストアンサー率39% (7417/18945)
VBAを使えば可能ですが... 例:B2に数値が入力されたら、消費税5%を付加するマクロです。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$2" And IsNumeric(Target.Value) Then Target.Value = Int(Target.Value * 1.05) End If End Sub
補足
ご回答ありがとうございます。 マクロを使えばできるのですね。 でもマクロの使い方がわかりませんので 困っています。
お礼
この度はとても親切に教えていただきまして ありがとうございました。 結局B列に適応できるようにコードを貼り付けましたら 無事にできました。 本当に助かりました。