VBA筛选select
Dim data_text As String data_text = Analiza_Date.TextBox6.Value Worksheets("PE_Centralizare").Activate Range("A3").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection).AutoFilter field:=1, Criteria1:=data_text
我只想过滤“A3”列的select。
黄色VBA标记最后一行:
Range(Selection).AutoFilter field:=1, Criteria1:=data_text
尝试这个:
Dim data_text As String data_text = Analiza_Date.TextBox6.Value Worksheets("PE_Centralizare").Activate Range("a3").CurrentRegion.AutoFilter field:=1, Criteria1:=data_text
总是重做录音机产生的东西。 这是一个很好的学习工具,并找出具体任务需要什么指示,但生成的代码是一团糟,应该总是清理。
你必须改变:
Range(Selection).AutoFilter field:=1, Criteria1:=data_text
进入:
Range(Selection.Address).AutoFilter field:=1, Criteria1:=data_text
或更好:
Selection.AutoFilter field:=1, Criteria1:=data_text
更好的是你:
-
避免
Select
/Selection
/Activate
/ActiveXXX
模式,因为它们导致对实际处理的Range
(Worsheet
和什么Workbook
)的松散控制,特别是在多个工作表/工作簿上下文中 -
与
Range
variables一起使用完全限定(至less工作表)引用,如下所示:Dim data_text As String data_text = Analiza_Date.TextBox6.value With Worksheets("PE_Centralizare") '<--| refer wanted worksheet .Range(.Range("A3"), .Range("A3").End(xlDown)).AutoFilter field:=1, criteria1:=data_text '<--| all those leading "dots" mean their subsequent object refer to the object in the last 'With' statement (ie "PE_Centralizare" worksheet) End With