使VBA Excel中的搜索字段动态聚焦结果



我有一个大的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 就这么简单。

相关内容

  • 没有找到相关文章

最新更新