
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでシートの保護をかける際に「書式設定の変更」を有効にする 1 2023/04/17 18:18
- その他(Microsoft Office) エクセル VBAについて 2 2022/09/21 22:21
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) excelの列幅高さが勝手に変わる(特定のPCだけ) 8 2022/07/14 16:51
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) ExcelVBA ドロップボックスで月を選択するとそれ以降のデータが残るようにしたい。 3 2022/12/16 14:53
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/03/01 15:44
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでオートフィルタのボ...
-
エクセルで時刻(8:00~20:00)...
-
エクセルのオートフィルタで最...
-
Excelのオートフィルタで非表示...
-
エクセル関数で、数字の入った...
-
エクセルの偶数行(奇数行)の抽出
-
オートフィルタで3つ以上の条...
-
【excel】リスト内の条件にあっ...
-
オートフィルタは金額の桁カン...
-
マクロで条件に合った行の選択...
-
なぜShowAllDataだとうまく行か...
-
access マクロでのフィルタの...
-
Excel共有ブックのオートフィル...
-
【Excel】行に複数回出てくる人...
-
オートフィルタを見出し行選択...
-
オートフィルタで選択した項目...
-
VBAでオートフィルターの再検索
-
エクセルのオートフィルタで困...
-
Excelオートフィルターで絞り込...
-
Excelで一定の行(列)間隔の数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでオートフィルタのボ...
-
エクセルのオートフィルタで最...
-
エクセルで時刻(8:00~20:00)...
-
Excelのオートフィルタで非表示...
-
エクセルの偶数行(奇数行)の抽出
-
オートフィルタで3つ以上の条...
-
access マクロでのフィルタの...
-
エクセル関数で、数字の入った...
-
エクセルのオートフィルタで困...
-
スプレッドシートのチェックボ...
-
可視セルを対象としたcountifが...
-
データの抽出を教えてください
-
エクセルで隔週をもとめる
-
オートフィルタで未入力(空白...
-
エクセルにて、フィルタをかけ...
-
Excel共有ブックのオートフィル...
-
エクセルで検索窓のようなもの...
-
VBA オートフィルタで抽出した...
-
【EXCEL】条件に一致した最新デ...
-
エクセル、オートフィルタで最...
おすすめ情報