VBAでRangeクラスのHiddenプロパティを設定できない

この記事は次のブログに引っ越しました。

■[Excel] VBAで「実行時エラー '1004':RangeクラスのHiddenプロパティを設定できません。」エラー 17:39 VBAで「実行時エラー '1004':RangeクラスのHiddenプロパティを設定できません。」エラーを含むブックマーク CommentsAdd Star Range("A1").Value = "" Columns("A:D").EntireColumn.Hidden = True VBAで上記のようなスクリプトを実行した際に「実行時エラー '1004':RangeクラスのHiddenプロパティを設定できません。」エラーが表示されることがあります。 よくあるのが、ロックがかかっているセル・行・列などを、Hiddenプロパティで非表示にしようとしている場合に発生するケースで、特に"Worksheet_Change"でセルの変更内容にあわせて行や列を表示・非表示したり、シート保護でロックを動的に解除したりしている場合です。 その場合は"Application.EnableEvents = False"で、処理前にイベントの監視を一時停止してあげる必要があります。 スクリプトは「Worksheet_Change」内で使っている シートを保護していて、処理毎に解除しては戻している 上記にマッチする(心当たりがある)場合、恐らく直前にセルの値を変更していると思います。 つまり、変更するたびに「Worksheet_Change」が呼び出されてシートがロックされるためエラーが発生しているのです。そのため、処理直前に呼び出しを止めてあげれば動くと思います。 Application.EnableEvents = False Range("A1").Value = "" Columns("A:D").EntireColumn.Hidden = True Application.EnableEvents = True