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模式,因为它们导致对实际处理的RangeWorsheet和什么Workbook )的松散控制,特别是在多个工作表/工作簿上下文中

  • Rangevariables一起使用完全限定(至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