ID非公開
ID非公開さん
2021/2/23 0:08
3回答
ExcelVBAについて質問です。 素人ながらに下記のマクロを作成しエラーが出ずに動いています。 簡単な掛け算をマクロ上で行うものです。
ExcelVBAについて質問です。 素人ながらに下記のマクロを作成しエラーが出ずに動いています。 簡単な掛け算をマクロ上で行うものです。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Dim i As Long For i = 3 To 32 If Range("D" & i).Value <> "" And Range("F" & i).Value <> "" Then Range("G" & i).Value = Range("D" & i).Value * Range("F" & i).Value Else Range("G" & i).Value = "" End If Next i Application.EnableEvents = True End Sub ただ関係のないセルに入力してもマクロが実行されてしまうみたいです。 D列、F列に入力したときにマクロが起動するようにしたいので 指定したセルでマクロを動かす方法を調べたところ If Target.Address = Range("").Address Then できることがわかりました。 そこで下記の一文を追加しました。 If Target.Address = Union(Range("D" & i), Range("F" & i)).Address Then 追加したところエラーはでなくマクロの計算を行わなくなりました。 そこで下記の一文で試しに動かしてみたところ動きました。 If Target.Address = Range("D" & i).Address Then 複数セルを範囲にする方法はあるのでしょうか? それとも指定方法が間違えているのでしょうか? 追加したマクロは下記の通りです。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Dim i As Long For i = 3 To 32 If Target.Address = Union(Range("D" & i), Range("F" & i)).Address Then If Range("D" & i).Value <> "" And Range("F" & i).Value <> "" Then Range("G" & i).Value = Range("D" & i).Value * Range("F" & i).Value Else Range("G" & i).Value = "" End If End If Next i Application.EnableEvents = True End Sub
Visual Basic | Excel・28閲覧・100
ベストアンサー
こんな感じですかね? Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range, rngs As Range, i As Long Set rngs = Intersect(Range("D3:D32,F3:F32"), Target) If Not rngs Is Nothing Then Application.EnableEvents = False For Each rng In rngs i = rng.Row If Range("D" & i).Value <> "" And Range("F" & i).Value <> "" Then Range("G" & i).Value = Range("D" & i).Value * Range("F" & i).Value Else Range("G" & i).Value = "" End If Next rng Application.EnableEvents = True End If End Sub
質問者からのお礼コメント
ありがとうございました。
お礼日時:2/23 10:38