Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


16709 / 76732 ←次へ | 前へ→

【65487】エラー制御
質問  みるく  - 10/5/26(水) 1:28 -

引用なし
パスワード
   ウィンドウズ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列が表示されていれば、現状のマクロを作動させる。
このように考えてコードを作りたいのですが、
なかなかうまくいきません。

どなたか、どうかご教示いただけないでしょうか。
私の考え方よりも合理的な方法などあれば、
それも教えていただければ幸いです。

どうぞ宜しく御願いいたします。

2 hits

【65487】エラー制御 みるく 10/5/26(水) 1:28 質問
【65489】Re:エラー制御 Jaka 10/5/26(水) 10:49 発言
【65502】Re:エラー制御 みるく 10/5/27(木) 22:00 お礼

16709 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free