『シートの保護をしている常態でオートフィルター』(レリオネ) [シートの保護をしている常態で、データをオートフィルター機能を使って処理をしたとします。オートフィルター機能の処理した元の状態に戻すマクロを設定していたとします。マクロを実行すると保護を解除しないと実行できませんが、実行できる方法はありますでしょうか?かなり悩んでいます。』(レリオネ) ---- マクロなら保護で UserinterfaceOnly:=True にしてオートフィルタを EnableAutoFilter=True としたらいいですよ。 わかりにくいけど、↓この中でも使っていますので参考にしてください。 [[20050414215944]]『納期管理表−今日までのデータ印刷実行』(あっちゃん) (SoulMan) ---- 同じ内容なので、こちらに統合しました。(kazu) ---- 『質問が2つあります。シートに保護をかけた状態で、オートフィルタ機能を使用したい。もう一つは、オートフィルタの「すべて」をマクロを使用して自動記録しました。(マクロを実行した時に、すべて元に戻す)しかし、シートに保護がかかっていると保護を解除しなければ実行できません。 セルの内容を他の人に削除されない様にしたいのですが、他の人にオートフィルタ機能は使用させたいのです。特にオートフィルタ機能の「すべて」をマクロで実行できるようにしたいのですが、出来るのでしょうか?宜しくお願い申し上げます。』(レリオネ) ---- おはようございます。 なさりたいことによっては少し違うかもしれませんが、、 とりあえず、こんな感じでどうでしょうか? Option Explicit 'シートに保護をかけた状態で、オートフィルタ機能を使用したい。 'オートフィルタを予め掛けておいてください。 Sub てすと() Dim MyRng As String Dim i As Long With ActiveSheet '保護下でのオートフィルタを有効にします。 .EnableAutoFilter = True 'UserInterfaceOnlyをTrueにしてユーザーの操作のみに保護を掛けます。 .Protect , , , , True 'オートフィルタが掛かっていたら If .AutoFilterMode Then With .AutoFilter 'アドレスを取得します。 MyRng = .Range.Address 'フィルタの数を数えて For i = 1 To .Filters.Count '各フィルタが With .Filters(i) 'Onだったら If .On Then '(マクロを実行した時に、すべて元に戻す) With ActiveSheet.Range(MyRng) .AutoFilter Field:=i End With End If End With Next End With End If End With End Sub 追伸!! 失礼!!最近のExcelは保護が掛かっていても出来るみたいです。 なので、これはExcel2000の場合です。 (SoulMan) ---- ありがとうございます。 実行しましたら、コンパイルエラーで「プロシージャー内では無効です」とでました。 ---- すみません。出来ました!このエクセルの学校は本当にすばらしいです。ありがとうございました。SoulManさん本当にありがとうございます。