|
ウィンドウズxp
エクセル2007を使用しています。
ある表を開いたとき、H〜J列を非表示になるようにシート保護をかけ、
さらにパスワードを設定しています。
H〜J列を表示したい場合は、シート保護を解除するのですが、
シート終了時、H〜J列を非表示設定にし忘れても、
自動的にH〜J列を非表示にして、保存するマクロを作りました。
============================
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Columns("H:J").Select
Selection.EntireColumn.Hidden = True
ActiveSheet.Protect Password:="123", DrawingObjects:=True, contents:=True, UserInterfaceOnly:=True
End Sub
============================
実際にシート保護を解除して、H〜J列を表示させれば、
問題ないのですが、
シート保護を解除せずに、H〜J列を表示することなく、
そのまま終了してしまうと、以下のエラーメッセージが出てしまいます。
============================
実行時 エラー'1004'
RangeクラスのHiddenプロパティを設定できません
============================
おそらく隠す必要がないのでエラーになってしまうのだと思います。
もちろん、エラーメッセージをそのまま終了してしまえば、
改めてシートを開いたときには、H〜J列は非表示になっており、
シート保護もパスワードで保護されてはいるのですが、
このエラーメッセージを表示させずに終了したいのです。
私の考え方としては、H〜J列が表示されていなければ、
そのまま上書き保存するかどうかを聞いてきて、Yesで保存して終了。
H〜J列が表示されていれば、現状のマクロを作動させる。
このように考えてコードを作りたいのですが、
なかなかうまくいきません。
どなたか、どうかご教示いただけないでしょうか。
私の考え方よりも合理的な方法などあれば、
それも教えていただければ幸いです。
どうぞ宜しく御願いいたします。
|
|