Excel VBA清除宏不工作,除非在筛选条件表上
我构建了一个用于进行简单筛选搜索的用户表单。我可以在选择任何工作表时打开表单并进行筛选。但是,当我使用userform中的clear按钮但不在筛选条件工作表(Sheet1)上时,第一条Select语句出现“1004:Select Method of Range class failed”错误Excel VBA清除宏不工作,除非在筛选条件表上,excel,vba,userform,Excel,Vba,Userform,我构建了一个用于进行简单筛选搜索的用户表单。我可以在选择任何工作表时打开表单并进行筛选。但是,当我使用userform中的clear按钮但不在筛选条件工作表(Sheet1)上时,第一条Select语句出现“1004:Select Method of Range class failed”错误 Sub Clear() ' ' Clear Macro ' Sheet1.Range("A2:H2").Select Selection.ClearContents Sheet1.R
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
我能想到的另一件可能会把事情搞砸的事情是Me…
。选择
仅当您在指定的工作表上时有效,在您的代码中使用的是Sheet1(..)。选择
意味着您在Sheet1上选择了某些内容,如果您在不同的工作表/选项卡上,则会失败。要避免这种情况,必须避免使用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
。选择
仅当您在指定的工作表上时有效,在您的代码中使用的是工作表1(..)。选择
表示您在工作表1上选择了某些内容,如果您在不同的工作表/选项卡上,则会失败。要避免这种情况,必须避免使用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
一般来说,您希望在您的代码中如前所述,最好避免使用激活和选择,但是为了快速修复,您可以尝试使用
ActiveSheet
而不是ActiveSheet
像ActiveSheet.Range(…)。也可以选择,您是在单独的模块中还是在工作表模块中有此代码?@RicardoA:它在单独的模块中,而不是在工作表模块中。如果表单没有查看活动工作表,会发生什么情况?@controlnetic.nomad:我知道这个问题和答案,但我现在无法理解,请避免使用Select,我刚刚发布的答案是这样的,如果有任何问题,请回复答案。一般来说,您希望在您的代码中如前所述,最好避免使用激活和选择,但是为了快速修复,您可以尝试ActiveSheet
像ActiveSheet.Range(…)。也可以选择,您是在单独的模块中还是在工作表模块中有此代码?@RicardoA:它在单独的模块中,而不是在工作表模块中。如果表单没有查看活动工作表,会发生什么情况?@controlnetic.nomad:我知道这个问题和答案,但我现在无法理解,请避免使用Select,我刚刚发布的答案是这样的,如果有任何问题,请回复答案。如果您只使用Sheet1,则可以将工作簿和工作表一起调用:与此工作簿一起使用。工作表(“Sheet1”)
,然后继续使用.Range(“A2:H2”).ClearContents
。根据您使用
在中所做的工作的多少,有时调用工作表名称也会更容易/更干净。如果您仅使用Sheet1,则可以将工作簿和工作表一起调用:使用此工作簿。工作表(“Sheet1”)
,然后继续使用范围(“A2:H2”)。ClearContents
。根据您使用
在中执行的操作的多少,有时调用工作表名称也会更容易/更干净。