プロが教えるわが家の防犯対策術!

エクセルでセルに税抜き価格を入力したら、自動的に税込価格に
変換されるようにするにはどうすればいいのでしょうか?
よろしくお願い致します。

A 回答 (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
    • good
    • 0
この回答へのお礼

この度はとても親切に教えていただきまして
ありがとうございました。
結局B列に適応できるようにコードを貼り付けましたら
無事にできました。
本当に助かりました。

お礼日時:2007/07/27 11:50

どなたも追加回答されないようなので、


横やりの私が回答します。

1)下のシート名のタブの上で右クリック
2)「コードの表示」をクリック
3)左側のプロジェクトエクスプローラーで、
  VBAProjectの中に複数のシートがあると思いますが、
  今、自動で税込価格を表示させたいシートをダブルクリック
 (プロジェクトエクスプローラーが表示されていなければ、
  上部の「表示」メニューから選択表示できます。)
4)右側にコードを貼り付けます。
  実行は、税抜き価格を入力確定すれば自動的に行われます。

コードは#1のmshr1962さんのものをコピーされると思いますが、
#3のzap35さんの指摘のように、
Application.EnableEvents = False
 処理の記述
Application.EnableEvents = True
を追加したほうが良いと思います。
これを記述しておかないとイベントが多重に発生し、
無限ループに陥る可能性があります。

この説明で分からなければ追加で補足してください。

この回答への補足

丁寧に教えていただいてありがとうございます。
1)から4)までコードを貼り付けるところまではできたのですが、
その後に
Application.EnableEvents = False
 処理の記述
Application.EnableEvents = True
の追加ですが、どの部分の後に記述すればいいのでしょうか?
処理の記述も入れるのでしょうか?

本当に何も知らないのにマクロを使おうとするものだから・・・
申し訳ありませんが、またよろしくお願い致します。

補足日時:2007/07/23 16:40
    • good
    • 0

こんにちは。



回答は既に出ています。

質問とは直接関係ない余談ですが、
消費税は今後上昇する可能性があります。

税率5%は、変数(またはセル絶対参照)にしておいた
方がいいですよ。
    • good
    • 0

>自動的に税込価格に変換されるようにする


とは入力したセルの値を直接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倍にするほうですので
マクロを使えばできるのですね。
でもマクロの使い方がわかりませんので
困っています。

補足日時:2007/07/19 13:26
    • good
    • 0

=ROUNDDOWN(A1*1.05,0)

この回答への補足

ご回答ありがとうございます。
他の方の回答からマクロを使えばできるそうですが
マクロの使い方がわかりませんので
困っています。

補足日時:2007/07/19 13:27
    • good
    • 1

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

この回答への補足

ご回答ありがとうございます。
マクロを使えばできるのですね。
でもマクロの使い方がわかりませんので
困っています。

補足日時:2007/07/19 13:25
    • good
    • 1

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