• ベストアンサー

シートを保護した状態で2つのシートでオートフィルタを使う方法

Excel2000です。 シートを保護した状態でオートフィルタを使用する方法を教えてください。 シートはA,B,C,D,Eの5つあり、その内のAとBのみオートフィルタを使用したいのですが。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

Private Sub Workbook_Open()   With Me.Worksheets("A")     .EnableAutoFilter = True     .Protect Password:="PSW", UserInterFaceOnly:=True   End With   With Me.Worksheets("B")     .EnableAutoFilter = True     .Protect Password:="PSW", UserInterFaceOnly:=True   End With End Sub

big-sei
質問者

お礼

早速の情報をありがとうございました。 これで仕事がはかどります。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

Excel2000では、マクロを使わないと設定できません。 一例です。 'ThisWorkbookModuleにコピーペースト必要。 '------------------------------------------------- Option Explicit Private Sub Workbook_Open()   Dim ws As Worksheet      'セル右クリックメニューに"aFilter"追加   With Application.CommandBars("Cell") _           .Controls.Add(Type:=msoControlButton, _                  Before:=1, _                  Temporary:=True)     .Caption = "AutoFilter"     .OnAction = Me.CodeName & ".aFilter"   End With   '[EnableAutoFilter]プロパティと _    Protect引数[UserInterfaceOnly]を設定 _    各シートごとに必要   For Each ws In ThisWorkbook.Worksheets     With ws       '設定するシート名で条件分岐       If .Name = "A" Or .Name = "B" Then         .Unprotect         .EnableAutoFilter = True         .Protect UserInterfaceOnly:=True       End If     End With   Next End Sub '------------------------------------------------- Private Sub aFilter()   On Error Resume Next   Selection.AutoFilter   On Error GoTo 0 End Sub '------------------------------------------------- Private Sub Workbook_BeforeClose(Cancel As Boolean)   On Error Resume Next   'Bookを閉じる時、追加したControlを削除   Application.CommandBars("Cell").Controls("AutoFilter").Delete   On Error GoTo 0 End Sub '------------------------------------------------- BookOpenと同時に目的のシートをオートフィルタを許可しつつ保護します。 それと同時に、右クリックメニューにオリジナルの[AutoFilter]メニューを追加します。 (ワークシートメニューバーの既定の[オートフィルタ]メニューはシート保護でグレーアウトになり使えません)

big-sei
質問者

お礼

ありがとうございます。 VBA初心者の私には難し過ぎますね。 過去のQ&Aを調べていたら簡単なVBAがあり実行できました。しかし1つのシートしか適用されません。 これを2つのシートに適用するにはどうすれば良いのですか? Private Sub Workbook_Open()   With Me.Worksheets("Sheet1") 'Sheet1 に設定する場合    .EnableAutoFilter = True    .Protect Password:="PSW", UserInterFaceOnly:=True    'パスワードを、「PSW」にしました。   End With End Sub

すると、全ての回答が全文表示されます。
  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.1

当方Excel2002ですが オートフィルタ後シートを保護すれば 「シートの保護」ウィンドウが表示され、「オートフィルタの使用」がチェックできます

big-sei
質問者

お礼

早速試してみましたがExcel2000ではシートを保護すればオートフィルタは使用できませんでした。

すると、全ての回答が全文表示されます。