VBA 除非符合过滤条件,否则清除宏不起作用 Sheet

VBA Clear Macro Not Working Unless on Filter Criteria Sheet

我构建了一个用户表单来进行简单的过滤搜索。我可以在 select 编辑任何工作 sheet 时打开表格并进行过滤。但是,当我使用用户表单中的清除按钮但我不在过滤条件工作 sheet (Sheet1) 上时,我收到“1004:Select 范围方法 class 失败”错误对于第一个 select 语句。

Sub Clear()
'
' Clear Macro
'
    Sheet1.Range("A2:H2").Select
    Selection.ClearContents
    Sheet1.Range("A5:H1725").Select
    Selection.ClearContents
    Sheet1.Range("A2").Select

End Sub

我是被迫打开过滤器 sheet 还是我的代码无法正常工作?我想要一个 sheet 打开表单按钮,隐藏数据 (Sheet2) 和过滤条件 (Sheet1)。

On cmdClear_click() 我在 运行 之前调用这个 清除:

Private Sub ClearForm()
'
'clear values
    With Me
        .txtCustId = ""
        .txtCustName = ""
        .txtAddress = ""
        .txtCity = ""
        .txtState = ""
        .txtZip = ""
        .txtCountry = ""
        .txtStatus = ""
    End With
End Sub

我能想到的唯一可能搞砸的就是我....

.Select 仅当您位于指定的 Sheet 时才有效,在您的代码中您使用 Sheet1(..).Select 意味着您正在选择 Sheet1 上的内容,如果你在另一个 Sheet/Tab 上它会失败。为避免这种情况,您必须避免使用 Select.

没有 Select 的相同结果:

Sub Clear()
'
' Clear Macro
    With ThisWorkbook
        'Replace "Sheet1" if you have renamed your Sheet to something else
        .Sheets("Sheet1").Range("A2:H2").ClearContents
        .Sheets("Sheet1").Range("A5:H1725").ClearContents
    End With
End Sub