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

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

VBAで「実行時エラー ’1004’:RangeクラスのHiddenプロパティを設定できません。」エラー

Range("A1").Value = ""
Columns("A:D").EntireColumn.Hidden = True

VBAで上記のようなスクリプトを実行した際に「実行時エラー ‘1004’:RangeクラスのHiddenプロパティを設定できません。」エラーが表示されることがあります。

よくあるのが、ロックがかかっているセル・行・列などを、Hiddenプロパティで非表示にしようとしている場合に発生するケースで、特に”Worksheet_Change”でセルの変更内容にあわせて行や列を表示・非表示したり、シート保護でロックを動的に解除したりしている場合です。

その場合は”Application.EnableEvents = False“で、処理前にイベントの監視を一時停止してあげる必要があります。

  1. スクリプトは「Worksheet_Change」内で使っている
  2. シートを保護していて、処理毎に解除しては戻している

上記にマッチする(心当たりがある)場合、恐らく直前にセルの値を変更していると思います。

つまり、変更するたびに「Worksheet_Change」が呼び出されてシートがロックされるためエラーが発生しているのです。そのため、処理直前に呼び出しを止めてあげれば動くと思います。

Application.EnableEvents = False
Range("A1").Value = ""
Columns("A:D").EntireColumn.Hidden = True
Application.EnableEvents = True

スポンサーリンク
レクタングル(大)広告

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク
レクタングル(大)広告