You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel高级筛选9999条数据报1004错误,求排查解决

问题分析与解决方案

你的问题不是高级筛选的数据范围限制,而是代码中构建数据范围时的字符串拼接错误导致的1004报错。

错误根源

看这行代码:

Set tblRange = WSC.Range("A5:L9999" & irow)

当你有9999条数据时,irow的值是10000(因为Offset(1,0)),拼接后会变成A5:L999910000——这个行号远超过Excel工作表的最大行(1048576行),属于无效的单元格引用,自然触发1004错误。而当数据只有999条时,irow是1000,拼接后是A5:L99991000,虽然同样是错误的范围,但此时实际数据行远小于这个错误行号,碰巧没触发越界报错,所以看似正常运行。

修正代码

你需要正确构建从A5到L列最后一行数据的范围,修改如下:

Private Sub txtsearchfor_Change()
Dim irow As Long
Dim tblRange As Range, tblCriteria As Range
Dim WSC As Worksheet ' 用Worksheet类型替代Object,更严谨

Set WSC = Worksheets("Catalog")
' 无需Activate,直接操作工作表即可
irow = WSC.Cells(WSC.Rows.Count, 1).End(xlUp).Row ' 去掉Offset(1,0),取最后一行数据的行号

' 正确构建数据范围:A5到L列最后一行
Set tblRange = WSC.Range("A5:L" & irow)
Set tblCriteria = WSC.Range("X1:X2")
WSC.Range("X1") = cbsearchby
WSC.Range("X2") = "*" & txtsearchfor & "*"

' 高级筛选的复制目标用起始单元格即可,Excel会自动匹配范围
tblRange.AdvancedFilter xlFilterCopy, tblCriteria, WSC.Range("AA5"), False

Call GetCatalogSearchData
End Sub

补充说明

Excel的高级筛选本身没有特殊行数限制,只要数据范围不超过当前工作表最大行数(Excel 2007及以后为1048576行)即可正常运行。

内容的提问来源于stack exchange,提问作者Uzin21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 19:30:34