[[20050831235213]] 『シートの保護をしている常態でオートフィルター』(レリオネ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シートの保護をしている常態でオートフィルター』(レリオネ)

[シートの保護をしている常態で、データをオートフィルター機能を使って処理をしたとします。オートフィルター機能の処理した元の状態に戻すマクロを設定していたとします。マクロを実行すると保護を解除しないと実行できませんが、実行できる方法はありますでしょうか?かなり悩んでいます。』(レリオネ)


 マクロなら保護で
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さん本当にありがとうございます。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.