0
ワンクリックで1つまたは複数の列に適用されるフィルタを削除するボタンを作成しようとしています。 私は保護されたシートを持っているので、私はこの仕事のためにコードのシートを保護しないで保護する必要があります この方法は機能しましたが、保護シートが4枚あるので約2秒かかりました。 次に、If条件を使用するという考えが得られました。VBA内の単一のボタンを使用してExcelで複数の保護されたシートのフィルタをクリアする
Sub Resetauto()
On Error GoTo Handler
Application.DisplayAlerts = False
Application.ScreenUpdating = False
If ActiveSheet.Name = "Sheet3" Then
Sheets("Sheet3").Unprotect Password:="pass"
ActiveWorkbook.ActiveSheet.ListObjects(1).Sort.SortFields _
.Clear
ActiveSheet.ShowAllData
Sheets("Sheet3").Protect _
Password:="pass", _
UserInterfaceOnly:=True, _
AllowFiltering:=True, _
AllowSorting:=True, _
AllowUsingPivotTables:=True
ElseIf ActiveSheet.Name = "Sheet1" Then
Sheets("Sheet1").Unprotect Password:="pass"
ActiveWorkbook.ActiveSheet.ListObjects(1).Sort.SortFields _
.Clear
ActiveSheet.ShowAllData
Sheets("Sheet1").Protect _
Password:="pass", _
UserInterfaceOnly:=True, _
AllowFiltering:=True, _
AllowSorting:=True, _
AllowUsingPivotTables:=True
ElseIf ActiveSheet.Name = "Sheet4" Then
Sheets("Sheet4").Unprotect Password:="pass"
ActiveWorkbook.ActiveSheet.ListObjects(1).Sort.SortFields _
.Clear
ActiveSheet.ShowAllData
Sheets("Sheet4").Protect _
Password:="Pass", _
UserInterfaceOnly:=True, _
AllowFiltering:=True, _
AllowSorting:=True, _
AllowUsingPivotTables:=True
Else
Sheets("Sheet5").Unprotect Password:="pass"
ActiveWorkbook.ActiveSheet.ListObjects(1).Sort.SortFields _
.Clear
ActiveSheet.ShowAllData
Sheets("Sheet5").Protect _
Password:="pass", _
UserInterfaceOnly:=True, _
AllowFiltering:=True, _
AllowSorting:=True, _
AllowUsingPivotTables:=True
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Sub
Handler:
Sheets("Sheet1").Protect _
Password:="pass", _
UserInterfaceOnly:=True, _
AllowFiltering:=True, _
AllowSorting:=True, _
AllowUsingPivotTables:=True
Sheets("Sheet2").Protect _
Password:="pass", _
UserInterfaceOnly:=True, _
AllowFiltering:=True, _
AllowSorting:=True, _
AllowUsingPivotTables:=True
Sheets("Sheet3").Protect _
Password:="pass", _
UserInterfaceOnly:=True, _
AllowFiltering:=True, _
AllowSorting:=True, _
AllowUsingPivotTables:=True
Sheets("Sheet5").Protect _
Password:="pass", _
UserInterfaceOnly:=True, _
AllowFiltering:=True, _
AllowSorting:=True, _
AllowUsingPivotTables:=True
Exit Sub
End Sub
このコードは何もしませんが、私のカーソルがフィルタ
私のコードで間違った何かがありますが削除されない2 sec..Itのために回転??
エラーハンドラを削除すると、VBAはデバッグを行いますか? [コードレビュー](http://stackoverflow.com/questions/tagged/code-review)の人々もいくつかの提案を助けることができます。 – Kevin