"sheet1"という名前のシートにフィルタが有効になっているかどうかを調べます。 "Sheet1"(最初のシートのデフォルト名)は "sheet1"と同じではありません。フィルタがある場合
ブックやテストにおける各シートを見てループを使用することができます。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim wsht As Worksheet
For Each wsht In ThisWorkbook.Worksheets
If wsht.AutoFilterMode = True Then
MsgBox "Filters not allowed, remove filters before saving", vbExclamation, "Warning!"
Cancel = True
Exit Sub
End If
Next wsht
End Sub
よりユーザーフレンドリーなアプローチは、保存する前に、すべてのフィルタを削除するには、このマクロを使用することですまた、ブックを保存するとフィルタが削除され、続行するかどうかを尋ねるメッセージが表示されます。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim wsht As Worksheet
For Each wsht In ThisWorkbook.Worksheets
If wsht.AutoFilterMode = True Then
MsgboxAnswer = MsgBox("Filters are currently active, saving this workbook will remove them. Do you want to continue?", vbYesNo)
If MsgboxAnswer = vbYes Then RemoveFilters = True
Exit For
End If
Next wsht
If RemoveFilters Then
For Each wsht In ThisWorkbook.Worksheets
wsht.AutoFilterMode = False
Next wsht
End If
End Sub
あなたはデバッグしましたか?サブにはまったく当たっていますか? – FunThomas