• ベストアンサー

EXCELのオートフィルターの保護の解除

EXCELのオートフィルターの保護の解除の仕方を教えてください。 一部は保護を解除して使用してますが、シートに保護をかけると、オートフィルターの機能が使えなくなります。 どうすればいいのでしょうか?

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.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

h_narunaru
質問者

お礼

回答ありがとうございました。 教えていただいて、色々と試していました。 中々難しいですネ オートフィルターが使えて、計算式だけが保護されて欲しいのですが、良い方法がありましたら、助言よろしくお願いたします。

関連するQ&A