changeイベントを使用して、特定の値を返すマクロを組んでいるのですが、changeイベントに合わせてfindメソッドを使用すると、下記の画像のようなオートメーションエラーが出てきてしまいます。
サンプルコードを以下に記載致します。
VBA
1Private Sub Worksheet_Change(ByVal Target As Range) 2 3Dim foundCd As Range, foundName As Range 4Set foundCd = ActiveSheet.Cells.Find(what:="コード", lookat:=xlWhole) 5Set foundName = ActiveSheet.Cells.Find(what:="名前", lookat:=xlWhole) 6 7If (Target.Value = "") Then 8 ActiveSheet.Cells(Target.Row, foundName.column).ClearContents 9Else 10 ActiveSheet.Cells(Target.Row, foundName.column) = "〇" 11End If 12 13End Sub
私自身でも色々と試してみたところ、findメソッドを使用しなければ、オートメーションエラーは起こさないというのが分かりました。
ただどうしてchangeイベントにfindメソッドを組み合わせるとオートメーションエラーが出てきてしまうのか分からず、教えて頂けないでしょうか。
例えば上記のコードをfindメソッドを使用しないで書こうとすると以下のようになります。
VBA
1Private Sub Worksheet_Change(ByVal Target As Range) 2 3If (Target.Value = "") Then 4 ActiveSheet.Cells(Target.Row, Target.column + 1).ClearContents 5Else 6 ActiveSheet.Cells(Target.Row, Target.column + 1) = "〇" 7End If 8 9End Sub
findメソッドを使用しなけば、確かにオートメーションエラーが出ずに済むのですが、表のレイアウトが変わる可能性を考えると、できるだけfindメソッドなどを用いて柔軟性のあるマクロにしたいたと思っております。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/21 23:33 編集
2021/04/22 02:52
2021/04/22 12:31