使VBA Excel中的搜索字段动态聚焦结果
我有一个很大的Excel表格,在上面我添加了一个动态搜索字段文本框,效果很好使VBA Excel中的搜索字段动态聚焦结果,vba,excel,excel-2016,Vba,Excel,Excel 2016,我有一个很大的Excel表格,在上面我添加了一个动态搜索字段文本框,效果很好 Private Sub TextBox1_Change() ActiveSheet.Range("E6:E150").AutoFilter Field:=4, Criteria1:="*" & [G1000] & "*", Operator:=xlFilterValues End Sub 问题是,如果我过滤掉第500行,则结果不可见,因此我必须手动向上移动光标 我尝试了这个(以及其他很多东西)
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”:需要对象
非常感谢您的帮助。可能是当前选定但隐藏的activecell上方的第一个可见单元格
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,因为范围中没有4个字段(“E6:E150”);只有一个。还删除了不必要的运算符:=xlFilterValues,因为这仅在使用数组作为标准时才需要。很抱歉不精确。
从实现Jeeped的答案中可以看出,使用select并不是一个好主意。
我找到了我想要的:
专用子文本框1_Change()
使用ActiveSheet
.范围(“E6:E150”)。自动筛选字段:=4,标准1:=“”和[G1000]&“
ActiveWindow.ScrollRow=1
以
端接头
就这么简单。你能提供更多信息吗?根据您发布的内容,我无法复制这种情况。您的意思是,如果
ActiveCell
被AutoFilter
隐藏,您希望将其移动到其上方的第一个可见单元格?AutoFilter
不会返回范围,因此您无法。请选择它。这就是为什么会出现错误“需要对象”<代码>。选择
需要一个范围对象,但
自动筛选不提供范围对象。这是一个定义性的例子,比大多数例子更清楚,因为原始问题X
和尝试解决的次级问题Y
,都记录在同一个问题中。与其试图解决问题Y,不如把重点放在X上。另一部分我不明白:如果你过滤行6:150
如何自动过滤隐藏行500
?请提供更多关于您需要完成的内容的详细信息,以及为什么将AutoFilter字段更改为1,因为范围内没有4个字段(“E6:E150”)-很好的捕获-这将是他将遇到的下一个错误(1004)他似乎不太愿意提供详细信息,因此+1用于猜测:)