- ベストアンサー
EXCELのオートフィルターの保護の解除
EXCELのオートフィルターの保護の解除の仕方を教えてください。 一部は保護を解除して使用してますが、シートに保護をかけると、オートフィルターの機能が使えなくなります。 どうすればいいのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>シートに保護をかけると、オートフィルターの機能が使えなくなります。 『シートを保護したが、その状態でオートフィルターも使いたい』という要望でしょうか。 これはExcelの仕様で、どうしようもない気がします。保護を解除する必要があるでしょう。 この要望の表現を少し変えて、 『シートの保護をしないで保護と同等の状態を作り出し、かつオートフィルターを使う』 ではどうでしょうか。下のマクロで実現してみました。(Sheet1で行う例です) ○下のマクロをセットしておくと、Sheet1に変更はできません。(Undoで復元します) ○Sheet1でオートフィルターが使えます。オートフィルター結果はUndoされません。 ●欠点・・・完全な保護ではありません。罫線、書式などは変更できます。長くなるので手を抜いています。 [設定手順-1] Sheet1のA1に =COUNTA(A2:A65536,B:IV) をセットします。これは変更を検知するためです。 セルA1は例です。算式の主旨は、自分以外のセルのCOUNTAです。分かり易くするためにA1にしました。 [設定手順-2] ツール→マクロ→Visual Basic Editor でVBE画面に移り、 表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示します。プロジェクトエクスプローラのSheet1をダブルクリック。出てきたコードウインドウに下記マクロをコピーして貼り付けます。 マクロを貼り付けた時の状態は、Sheet1の変更はできません。Sheet1は保護され、オートフィルターが使用できます。 [操作] マクロ『非保護_Sheet1』を実行するとSheet1の変更ができます。シートの保護の解除と同じです。 マクロ『保護_Sheet1』を実行するとSheet1の変更はできません。シートの保護と同じです。 (この2つのマクロはショートカットキーに割り当てておけばすばやく実行できます。 『非保護_Sheet1』、『保護_Sheet1』については、ツール→マクロ→マクロ でマクロを選択し、 オプションからそれぞれ、ショートカットキーを割り当てておくと便利かと思います) こういうこともできるというくらいに、捉えて下さい。ご参考に。 ここから ↓ Public Flg As Boolean 'シートの変更可否(Trueなら変更可) 'シート保護の代用のマクロ Private Sub Worksheet_Calculate() If Flg Then Exit Sub On Error Resume Next With Application 'シートを切り替えたときの対応 If ActiveCell.Parent.Name = "Sheet1" Then '変更をUndoで元に戻す←保護の代用 .EnableEvents = False .Undo .OnUndo "", "" .EnableEvents = True End If End With End Sub 'Sheet1の変更を可とする(シートの保護をしない) Sub 非保護_Sheet1() Sheet1.Flg = True End Sub 'Sheet1の変更を不可とする(シートの保護の機能) Sub 保護_Sheet1() Sheet1.Flg = False End Sub
お礼
回答ありがとうございました。 教えていただいて、色々と試していました。 中々難しいですネ オートフィルターが使えて、計算式だけが保護されて欲しいのですが、良い方法がありましたら、助言よろしくお願いたします。