数分後・・・

ふと思って、ワークシート開いたときに、Debug.Print Sheet1.Name (シートはたくさんあるのでこれを全部)
をやってみたらどうか? ということで、

For Each sh In Sheets 以下略 で書いてみると、そこでエラー。
一行ずつ Debug.Print Sheet1.Name ・・・ としたらエラーにならず。
もしかしてFor Each が悪いのか? と思い、元のコードを
For i=1 To Sheets.Count
Set sh = Sheets(i)
〜 今までのコード〜
Next i
としたら、エラーにならず。ってことでFor Each でまわすのが悪いっぽい。

これが、ImplementsしたsheetをFor Eachでまわすのが悪いのか、
単に、sheetをFor Eachでまわすのが悪いのかは、そのうち実験するかもしれない。