マクロで発生するエラーを無視するには
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim CellRange As String, S As String
CellRange = "A1:D5"
ActSheet = ActiveWorkbook.ActiveSheet.Name '現在開いているシート名を取得
ActSheet = Left(ActSheet, 5) 'シート名から「Sheet」の部分だけ抜き出す
Set r = Intersect(Target, Range(CellRange))
If Not (r Is Nothing) Then
Application.EnableEvents = False
For Num = 1 To 3
S = ActSheet & Num
Worksheets(S).Range(r.Address).Value = r.Value
Next
Application.EnableEvents = True
End If
End Sub
シートSheet1、Sheet2、Sheet3がある時に、
あるシートのセル範囲A1:D5の中のセルに値が書き込まれたら、他のシートの同じ位置に同じ値を入力させるコードです。
このコードは過去に質問した時に教えていただいたもののほぼコピーです。
値を入力し、確定後にシートを切り替えることで正常に動作します。
ただし、セルに値を入力したが『確定していない状態』でシートを切り替えるとエラーが発生して止まります。
エラーメッセージは「実行時エラー'1004' Intersectメソッドは失敗しました。'_Global'オブジェクト」と出ます。
確定せずにシートを切り替えたのだからエラーが出るのは当たり前だと思うのですが、
なんとかエラーが出ないようにする方法は無いでしょうか。
欲を言えば、
シートを切り替えた時点でセルに入った未確定の値は確定扱いになって、
『他のシートの同じ位置に同じ値を入れる』のマクロが正常に動作するのが最も望ましいですが、
不可能な気もするので、
未確定の状態でシートを切り替えた場合は『他のシートの同じ位置に同じ値を入れる』のマクロは実行されなくても良いです。
ただエラーメッセージが出て止まってしまうのを避けたいです。
「エラーが出た時にエラーメッセージの「終了」を押す」というマクロが組めればそれでも問題ないのですが、
流石にその操作は「マクロを記録する」では記録してくれませんでした。
お礼
このような意味です。 ありがとうございます。 空白がemptyと知りませんでした。 blankだとばっかり・・・。