- ベストアンサー
エクセル シート保護をかけるとアウトラインが動作しない
Win2000 OfficeXPです。 アウトラインを設定し、シート保護をかけると、アウトラインのボタンをクリックしてもエラーが出てしまいます。 動作させる方法はあるのでしょうか? 保護はマクロを使用してかけています。 過去の類似質問の回答を見ると >代替策となりますが、 >入力規則を使ってはいかがでしょうか? >「ユーザー設定」にして「*」で指定しておけば、 >何が入力されてもエラーメッセージが出てきて、 >書き換えられないようにできます。 とありますが、他の方法はありませんか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 >再び全シート保護のマクロを実行すると >正常に作動するのですが。 もしかしてマクロを手動で実行していませんか? ↑が YES なら、 そうではなくて、ブックの OPEN イベントに記述してください。 次のようにしてください。 ------------------------- ALT + F11キーで VBE を起動 ↓ 画面左上のプロジェクトエクスプローラーにある ThisWorkbook をダブルクリック ↓ 右に表示されたコードウィンドウの上にある オブジェクトボックス(General となっているところ)から Workbook を選択 ↓ 表示された Workbook_Open のプロシージャの中にコードを記述してください。 (シート保護のマクロも含めて) ---------------------------- Private Sub Workbook_Open() <ここにコードを記述> End Sub ---------------------------- ※全シート保護でいいのなら No.1のコードをそのままコピーして貼り付けてください。 ◆こうしておけば、ファイルを開くときにこのマクロが自動的に実行されます。 ◆手動で実行する必要はありません。 ---- ついでに前回言い忘れましたが、 全シートに設定する必要がなければ(たとえば Sheet1 だけでいいのなら) ↓のようなコードになります。 --------------------------- Private Sub Workbook_Open() With Worksheets("Sheet1") .EnableOutlining = True .Protect UserInterfaceOnly:=True End With End Sub ---------------------------- ◆いずれにしても ThisWorkbook の OPEN イベントに記述してください。
その他の回答 (1)
- AloneAgain
- ベストアンサー率71% (285/400)
こんばんは。 EnableOutlining プロパティを TRUE にすればできると思います。 たとえば、すべてのシートに設定するなら、 ↓でどうでしょうか? ------------------------ Private Sub Workbook_Open() Dim sh As Worksheet For Each sh In Worksheets sh.EnableOutlining = True sh.Protect UserInterfaceOnly:=True Next sh End Sub -------------------------
お礼
ありがとうございます。 試してみたところ、全シート保護した後も アウトラインが正常に作動しました。 しかし、全シート保護をかけたままファイルを保存、 一旦エクセルを終了、そこで同ファイルを立ち上げなおすと 再びアウトラインが正常に作動せず保護解除を促すエラーメッセージが出てきました。 そこで再び全シート保護のマクロを実行すると 正常に作動するのですが。
お礼
回答ありがとうございます。 AloneAgainさんのおっしゃるとおり、 マクロを手動で実行していました。 わかりやすいフローチャートを元に再設定したところ、 エクセル再起動後も問題なくアウトラインが作動しました。 また、単独シートのみの設定方法についてもご教授頂き ありがとうございました。 これを機に私もマクロについてもっと勉強しようと思います。