• 締切済み

セル範囲内で変更があった場合に処理を行うには?

いつもお世話になっています。 たとえばA1:D4の範囲でどこかに変更があった場合に処理をする場合、どうしたらよいのでしょうか。 Private Sub Worksheet_Change(ByVal Target As Range)  Dim r as Range  For Each r In Me.Range("F14:O75")   If r = Target Then    処理    Exit For   End If  Next c End Sub こんな感じで考えてはみたのですが、素直な入力では動いても、オートフィルや、複数セル範囲指定で貼り付けなどをするとエラーが出てしまいます。 また、実際には範囲が広いので、処理速度なども気になります。 なにかよい解決策があればご教授お願いします。

みんなの回答

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.3

これも付け加えると良いですね。 If ActiveSheet.AutoFilterMode Then Exit Sub

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.2

Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Count > 1 Then Exit Sub   If Not Intersect(Target, Range("A1:D4")) Is Nothing Then   MsgBox Target.Address '実際の処理   End If End Sub #1の方の回答に、If Target.Count > 1 Then Exit Subを加えてください。 このコードの意味は、複数セルを指定していたら、処理を中断するものです。

  • jindon
  • ベストアンサー率43% (50/116)
回答No.1

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("F14:O75")) Is Nothing Then 処理 End Sub でOKですね