Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使VBA Excel中的搜索字段动态聚焦结果_Vba_Excel_Excel 2016 - Fatal编程技术网

使VBA 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行,则结果不可见,因此我必须手动向上移动光标 我尝试了这个(以及其他很多东西)

我有一个很大的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”:需要对象


非常感谢您的帮助。

可能是当前选定但隐藏的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用于猜测:)