我有一张大型Excel工作表,并且我添加了一个动态搜索字段文本框,工作正常。
Private Sub TextBox1_Change()
ActiveSheet.Range("E6:E150").AutoFilter Field:=4, Criteria1:="*" & [G1000] & "*", Operator:=xlFilterValues
End Sub
问题是如果我过滤掉行号500,结果是不可见的,所以我必须手动向上移动光标。
我尝试了这个(以及很多其他的东西)没有成功。
Private Sub TextBox1_Change()
With ActiveSheet.Range("E6:E150").AutoFilter Field:=4, Criteria1:="*" & [G1000] & "*", Operator:=xlFilterValues
.Select
End With
End Sub
它产生了这个
“运行时错误'424':需要对象”
感谢任何帮助。
答案 0 :(得分:1)
可能是当前所选但隐藏的活动单元格上方的第一个可见单元格。
Private Sub TextBox1_Change()
with ActiveSheet
.Range("E6:E150").AutoFilter Field:=1, Criteria1:="*" & [G1000] & "*"
if activecell.EntireRow.hidden then
dim i as long
for i=activecell.row to 6 step-1
if not .cells(i, activecell.column).EntireRow.hidden then
.cells(i, activecell.column).select
exit for
end if
next i
end if
end with
End Sub
我已将AutoFilter字段更改为1,因为Range中没有4个字段(" E6:E150");只有1.还删除了不必要的Operator:= xlFilterValues,因为只有在将数组用作Criteria1时才需要。
答案 1 :(得分:0)
抱歉不准确。
使用select并不是一个好主意,我可以从实现Jeepeds的答案中看到。
我找到了我想要的东西:
Private Sub TextBox1_Change()
With ActiveSheet
.Range("E6:E150").AutoFilter Field:=4, Criteria1:="" & [G1000] & ""
ActiveWindow.ScrollRow = 1
End With
End Sub
就这么简单。