| 
    
     |  | ウィンドウズ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列が表示されていれば、現状のマクロを作動させる。
 このように考えてコードを作りたいのですが、
 なかなかうまくいきません。
 
 どなたか、どうかご教示いただけないでしょうか。
 私の考え方よりも合理的な方法などあれば、
 それも教えていただければ幸いです。
 
 どうぞ宜しく御願いいたします。
 
 
 |  |