我有一个大的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':需要对象">
任何帮助,不胜感激。
可能是当前选定但隐藏的活动单元格上方的第一个可见单元格。
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
我已将自动筛选字段更改为 1,因为 Range("E6:E150"( 中没有 4 个字段;只有 1。还删除了不必要的运算符:=xlFilterValues,因为只有在使用数组作为 Criteria1 时才需要这样做。
很抱歉不精确。 使用选择不是我从实现吉佩车答案中看到的好主意。 我找到了我想要的东西:
Private Sub TextBox1_Change()
With ActiveSheet
.Range("E6:E150").AutoFilter Field:=4, Criteria1:="" & [G1000] & ""
ActiveWindow.ScrollRow = 1
End With
End Sub
就这么简单。