• ベストアンサー

エクセル シート保護をかけるとアウトラインが動作しない

Win2000 OfficeXPです。 アウトラインを設定し、シート保護をかけると、アウトラインのボタンをクリックしてもエラーが出てしまいます。 動作させる方法はあるのでしょうか? 保護はマクロを使用してかけています。 過去の類似質問の回答を見ると  >代替策となりますが、  >入力規則を使ってはいかがでしょうか?  >「ユーザー設定」にして「*」で指定しておけば、  >何が入力されてもエラーメッセージが出てきて、  >書き換えられないようにできます。 とありますが、他の方法はありませんか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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 イベントに記述してください。

noname#81542
質問者

お礼

回答ありがとうございます。 AloneAgainさんのおっしゃるとおり、 マクロを手動で実行していました。 わかりやすいフローチャートを元に再設定したところ、 エクセル再起動後も問題なくアウトラインが作動しました。 また、単独シートのみの設定方法についてもご教授頂き ありがとうございました。 これを機に私もマクロについてもっと勉強しようと思います。

その他の回答 (1)

回答No.1

こんばんは。 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 -------------------------

noname#81542
質問者

お礼

ありがとうございます。 試してみたところ、全シート保護した後も アウトラインが正常に作動しました。 しかし、全シート保護をかけたままファイルを保存、 一旦エクセルを終了、そこで同ファイルを立ち上げなおすと 再びアウトラインが正常に作動せず保護解除を促すエラーメッセージが出てきました。 そこで再び全シート保護のマクロを実行すると 正常に作動するのですが。