VBA清除宏不起作用,除非在过滤条件表上

时间:2019-04-02 16:32:06

标签: excel vba userform

我建立了一个用于进行简单过滤器搜索的用户表单。选择任何工作表后,我可以打开表单并进行过滤。但是,当我从用户窗体使用清除按钮但不在筛选条件工作表(Sheet1)上时,对于第一条select语句,出现“ 1004:选择范围类的选择方法失败”错误。

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

End Sub

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

在cmdClear_click()上,我在运行Clear之前调用它:

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

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

1 个答案:

答案 0 :(得分:2)

.Select仅在您位于指定工作表上时才有效,在代码中使用Sheet1(..).Select意味着您在Sheet1上选择了某些内容,如果您在其他工作表/选项卡上,它将失败。为了避免这种情况,您必须避免使用“选择”。

没有选择的结果相同:

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