VBA初心者です、よろしくお願いします。
列Eでオートフィルタを使用可能と設定したいので、下記のようにしましたが、「シートの保護を設定」のステップを終えた後オートフィルタも使用できません。
「AllowFiltering:=True」でEXCELのオートフィルタの使用にチェックを入れた状態になると考えていましたが、思うようになりませんでした。
「シートの保護を設定」のステップがおかしいと思うのですが、わかりません。
教えてください。
------------------------------------------------------
Private Sub Auto_Open()
'一旦、シート保護を解除
ActiveSheet.Unprotect Password:="AAA"
列Hのデータを重複データを無視で列Oに抽出
セルH2は「入力規則-リスト」~列Oのデータを使用
・
・
・
' シート保護を設定
ActiveSheet.Protect Password:="AAA", UserInterfaceOnly:=True, AllowFiltering:=True
End Sub
No.2ベストアンサー
- 回答日時:
「シートの保護を設定」のステップ は特におかしくはないです。
>..オートフィルタも使用できません。
とは、
A)既に設定してあるオートフィルタのフィルタ条件を変更する事
B)新規にオートフィルタ範囲を設定する、または既フィルタの解除をする事
のどちらの意味でしょうか。
(B)の意味の場合、AllowFiltering:=True を設定してもそれはできません。
元々の仕様です。
Protectメソッドのヘルプを見てください。
<help引用>
AllowFiltering
省略可能です。
バリアント型 (Variant) の値を使用します。
True を指定すると、ユーザーは保護されたワークシートにフィルタを設定することができます。
ユーザーは、フィルタ条件を変更できますが、オート フィルタの有効と無効を切り替えることはできません。
既定値は False です。
</引用>
特定範囲にオートフィルタを設定して、解除操作を保護しておきたい場合は
Auto_Openマクロ内でそのように記述すれば良いです。
オートフィルタの設定|解除操作も可能にしたい場合は、UserInterfaceOnly:=True にしてありますから、
その動作をマクロで組めば良いです。
マクロの実行についてはシートにボタンを設定したり、右クリックメニューに追加したり、
などが考えられます。
(右クリックメニュー設定例)
Option Explicit
'-------------------------------------------------
Private Sub Auto_Open()
ActiveSheet.Unprotect Password:="AAA"
':
ActiveSheet.Protect Password:="AAA", _
UserInterfaceOnly:=True, _
AllowFiltering:=True
Call barSet
End Sub
'-------------------------------------------------
Private Sub Auto_Close()
Dim c As CommandBar
For Each c In Application.CommandBars
If c.Name = "Cell" Then
On Error Resume Next
c.Controls("AutoFilter").Delete
On Error GoTo 0
End If
Next
End Sub
'-------------------------------------------------
Private Sub barSet()
Dim c As CommandBar
Dim cc As CommandBarControl
For Each c In Application.CommandBars
If c.Name = "Cell" Then
On Error Resume Next
Set cc = c.Controls("AutoFilter")
On Error GoTo 0
If cc Is Nothing Then
With c.Controls.Add(Type:=msoControlButton, _
Before:=1, _
Temporary:=True)
.Caption = "AutoFilter"
.OnAction = "aFilter"
End With
End If
End If
Next
End Sub
'-------------------------------------------------
Private Sub aFilter()
On Error Resume Next
Selection.AutoFilter
End Sub
'-------------------------------------------------
No.4
- 回答日時:
こんばんは。
ご質問の回答に的を得ていないかもしれませんが、マクロ処理の際に処理の前に保護解除して処理後に保護をする記述が煩わしくなりThisWorkbookに
Private Sub Workbook_Open()
Sheets("シート名").Protect Password:="AAA", userinterfaceonly:=True
End Sub
を記述するようにしています。
これは、マクロがそのシートを"AAA"というパスワードを保有しマクロ実行時にそのパスワードを使用し解除、保護をその都度やってくれます(表現的に正しいかわかりませんが私はそんな感じで使っています)
これを記述するようになってからは記述する際に気にする要素がひとつ減り楽になっています。
今回の問題がシート保護をかけるタイミング云々が関係しているようなら試してみられてはいかがでしょう
お門違いの内容ならスルーしてください^^;
No.3
- 回答日時:
#1の回答者です。
メニューの中のオートフィルタをオン・オフさせるということのようですね。
メニューの中で、フィルタ・コマンドは、グレーになってしまっています。
もし、そういうことでしたら、シート上に、コマンドボタンを設けたらどうですか?
>列Hのデータを重複データを無視で列Oに抽出
>セルH2は「入力規則-リスト」~列Oのデータを使用
この文章では、オートフィルタがどこに書かれてあるのか、良く分かりませんが、
例えば、O列にあるとしたら、以下のようにします。
Private Sub CommandButton1_Click()
Me.Range("O1").AutoFilter 'オートフィルタのデータの左上端
End Sub
もし、コマンドボタンが格好が悪いようでしたら、セルの形に合わせて、透明なコマンドボタンという方法もあります。プロパティで、Caption の中の字を消し、BackStyle を、0-fmBackStyleTranparent にすれば、透明になります。ただ、これではわかりづらいので、BackColor を適当な色をつけてあげてもよいと思います。
こちらの解釈で、回答の意味が違っていたら、ご容赦ねがいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
【お題】 ・存在しそうで存在しないモノマネ芸人の名前を教えてください
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
[Excel]保護されたシートのマクロによるオートフィルタ有効設定について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでオートフィルタのボ...
-
エクセルで時刻(8:00~20:00)...
-
Excelのオートフィルタで非表示...
-
エクセルのオートフィルタで最...
-
エクセルの偶数行(奇数行)の抽出
-
なぜShowAllDataだとうまく行か...
-
access マクロでのフィルタの...
-
VBA オートフィルタで抽出した...
-
オートフィルタを見出し行選択...
-
Excel2003 オートフィルタで「...
-
エクセルで、条件に一致した行...
-
Excel共有ブックのオートフィル...
-
エクセルフィルターオプション...
-
【Excel】行に複数回出てくる人...
-
オートフィルタで3つ以上の条...
-
エクセル、オートフィルタで最...
-
エクセルのオートフィルタで抽...
-
エクセル関数で、数字の入った...
-
[excel] 自由記述部分の抜き出し
-
エクセルで隔週をもとめる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでオートフィルタのボ...
-
エクセルで時刻(8:00~20:00)...
-
エクセルのオートフィルタで最...
-
Excelのオートフィルタで非表示...
-
エクセルの偶数行(奇数行)の抽出
-
エクセル関数で、数字の入った...
-
オートフィルタで選択したデー...
-
Excel共有ブックのオートフィル...
-
access マクロでのフィルタの...
-
なぜShowAllDataだとうまく行か...
-
オートフィルタで3つ以上の条...
-
スプレッドシートのチェックボ...
-
データの抽出を教えてください
-
可視セルを対象としたcountifが...
-
エクセルにて、フィルタをかけ...
-
オートフィルタで未入力(空白...
-
Excelで文字を入力と自動的にフ...
-
ACCESSでスペースの抽出
-
エクセルで指定期間内に在職す...
-
関数で小数点以下を抽出したい
おすすめ情報