- 締切済み
セル範囲内で変更があった場合に処理を行うには?
いつもお世話になっています。 たとえば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 こんな感じで考えてはみたのですが、素直な入力では動いても、オートフィルや、複数セル範囲指定で貼り付けなどをするとエラーが出てしまいます。 また、実際には範囲が広いので、処理速度なども気になります。 なにかよい解決策があればご教授お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ki-aaa
- ベストアンサー率49% (105/213)
これも付け加えると良いですね。 If ActiveSheet.AutoFilterMode Then Exit Sub
- ki-aaa
- ベストアンサー率49% (105/213)
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)
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("F14:O75")) Is Nothing Then 処理 End Sub でOKですね