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

初めまして。
エクセル初心者の者です。
質問の内容が分かりにくいこともあるかと思いますが、どうぞ宜しくお願い致します。

VBAProjectの入力について質問です。
税抜の金額を入れたら自動で税込になるようにコードを入力しています。
下記がそのコードです。

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = Range("I1").Column And IsNumeric(Target.Value) Then
Target.Value = Int(Target.Value * 1.08)
End If
Application.EnableEvents = True
End Sub

これで、Iの列に入力した数字は自動で税込になりました。
今回教えていただきたいのは、
同じシートのFとGの列も、同じように税抜を入れると税込になるようにしたいのですが、
どのようにコードを入力すればいいでしょうか?
上記のコードに何かを追加するのか、別のコードを上記のコードの下に貼りつけるのか
まったく分かりません。
教えていただきたいです。宜しくお願い致します。

A 回答 (4件)

このコードを拡張するのであれば、こんな感じですね。


ただ、色々な方のコード見て、勉強することをお勧めします。

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If (Target.Column = Range("F1").Column Or _
Target.Column = Range("G1").Column Or _
Target.Column = Range("I1").Column) And IsNumeric(Target.Value) Then
Target.Value = Int(Target.Value * 1.08)
End If
Application.EnableEvents = True
End Sub
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます!
参考にさせていただきます。
あと少し、回答いただけるのを待ってみようと思います。
ありがとうございました。

お礼日時:2017/02/27 16:58

こんばんは!



一例です。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("F:G,I:I")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If IsNumeric(.Value) Then
Application.EnableEvents = False
.Value = Int(.Value * 1.08)
Application.EnableEvents = True
End If
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 1
この回答へのお礼

こんにちは!
ご回答ありがとうございます。
色んなコードのやり方があるのですね。
とても勉強になります。
参考にさせていただきます。
ありがとうございました。

お礼日時:2017/02/28 10:32

別に私のマクロ自体は、大差ないとは思うけれども、ご商売をされている方なら、INT(定価*1.08) はだめとは教わらなかったでしょうか?


消費税というのは、お金を一時預かることだから、お客さんが商品を返すから、お金を返してほしい、と言われれば、消費税もお返ししなくてはなりません。しかし、商品販売の欠損はやむを得ないとしても、消費税での損はしてはなりません。

販売:  55円 + 5円(税)
返品:▲ 55円 ▲5円 
のはずですが、INT(-55) = -60 円になってしまいます。

絶対値(Abs)で計算してあとで、(Sgn関数により)符号をつけるか、以下のようなFix 関数が必要です。

'//
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("I:I,F:G")) Is Nothing Then Exit Sub
 If VarType(Target.Value) = vbDouble Then
  Application.EnableEvents = False
  Target.Value = Fix(Target.Value * 1.08)
  Application.EnableEvents = True
 End If
End Sub
    • good
    • 0
この回答へのお礼

こんにちは。
ご回答ありがとうございます。
知識不足でお恥ずかしいです。
参考にさせていただきます。
ありがとうございました。

お礼日時:2017/02/28 10:40

訂正:



販売:  55円 + 4円(税) =INT(55) :59
返品:▲ 55円 ▲5円  =INT(-55) : -60

検算してみてください。
    • good
    • 0

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