- ベストアンサー
エクセルVBAでシート保護後もフィルタを使用する方法
- エクセルVBAを使用して、シート保護後もフィルタを使用する方法を教えてください。
- 現在エクセル2000を使用しています。
- VBAで設定したコードがコンパイルエラーになってしまいます。正しい方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
変更前: With Worksheets.Select .Unprotect .EnableAutoFilter = True .Protect UserInterfaceOnly:=True End With 変更後: dim h as worksheet : For Each h In Worksheets With h .Protect UserInterfaceOnly:=True .EnableAutoFilter = True End With Next
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
現在は、Excel2000では試していませんが、Excel2000でしたら、以下のようにしたほうがよいでしょうね。 Unprotect も Protect もそれぞれのシートに対して実行してください。 それと、Excelには、予約語そのものはほとんどないものの、filter というプロシージャ名はよろしくありません。せめて、FilterPro とかにしてください。間違いではありませんが、おかしな影響を及ぼすことがあります。 .OnAction = "ThisWorkbook.FilterPr" Private Sub Workbook_Open() Dim sh As Variant With Application.CommandBars("Cell").Controls.Add( _ Type:=msoControlButton, Before:=1, Temporary:=True) .Caption = "AutoFilter" .OnAction = "ThisWorkbook.FilterPr" '名前 End With For Each sh In ThisWorkbook.Worksheets With sh .Unprotect .EnableAutoFilter = True .Protect UserInterfaceOnly:=True End With Next sh End Sub Private Sub FilterPr() '名前
お礼
ありがとうございます。 ネットで調べたものをいくつか繋げてみたので、 実際の文言の意味はあまり把握してませんでした。 全てのシートに一発で使えるようにしたかったので、 名前(シート名でよろしいのでしょうか?)部分を入力しない方法を探してました。
お礼
ありがとうございます! 一発でできるようになりました! とても助かりました!