excel - 带有高级过滤器的 Excel VBA“错误:Excel 资源不足”
问题描述
我在 VBA 中有使用高级过滤器填充多个表的代码。它之前没有任何错误。我从 Office 2013 升级到 Office 365,突然在代码上收到错误消息...
高级过滤器可以正确运行、填充和过滤表格,但我仍然收到一条错误消息,弹出“Excel 在尝试计算一个或多个公式时用尽资源。因此无法评估这些公式”。如果我按 OK 另一个错误显示"Run-time Error 1004: Advanced Filter method of range class failed"。该文件不包含公式,30500 行,37 列。
编辑(添加尝试过的解决方案)
我在网上搜索了解决方案并尝试了几个,但到目前为止都没有奏效。我尝试了以下方法:
- 关闭所有 Excel 应用程序并再次运行宏
- 关闭所有应用程序,只运行 Excel
- 将 Excel 的核心处理器从 4 个减少到 2 个
- 关闭高级选项中的多线程计算
- 删除所有 .COM 加载项
- 将文件减少到仅使用 100 行而不是完整文件,也尝试了 50
- 使用高级过滤器手动尝试,它不再起作用,我收到相同的错误消息。
- 我检查了所有的
On Error Resume Next
代码。它们都被封闭并以GoTo 0
- 尝试删除提取数据表上的过滤器并复制到范围表
- 尝试在运行过滤器之前激活我首先要复制到的工作表
- 尝试将过滤条件更改为设定范围而不是整列
Set CorpOrdCompCrit = .Range("$A$8:$F$10")
我在代码中使用了大约 20 次高级过滤器,所以这有点问题。代码的一部分如下所示(高级过滤器的所有 20 个部分的结构相同,但过滤条件不同,有时只有 1 个过滤器):
'Create Filter Criteria ranges
With MainWB.Worksheets.Add
.Name = "FltrCrit"
Dim FltrCrit As Worksheet
Set FltrCrit = MainWB.Worksheets("FltrCrit")
End With
With FltrCrit
Dim CorpOrdCompCrit As Range
Dim myLastColumn As Long
'Create Corporate Order Compliance Filter Criteria Range
.Cells(7, "A") = "Corp Order Comp"
.Cells(8, "A") = "MS"
.Cells(9, "A") = "=4"
.Cells(10, "A") = "=4"
.Cells(8, "B") = "SOH"
.Cells(9, "B") = "=0"
.Cells(10, "B") = "=0"
.Cells(8, "C") = "On Order"
.Cells(9, "C") = "=0"
.Cells(10, "C") = "=0"
.Cells(8, "D") = "RP Type"
.Cells(9, "D") = "Roster"
.Cells(10, "D") = "Roster"
.Cells(8, "E") = "Format"
.Cells(9, "E") = "Corporate"
.Cells(10, "E") = "Hyper"
.Cells(8, "F") = "Region"
.Cells(9, "F") = VRegion
.Cells(10, "F") = VRegion
'get last column, set range name
With .Cells
myLastColumn = .Find(What:="*", After:=.Cells(8), LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Set CorpOrdCompCrit = .Range(.Cells(8, "A"), .Cells(10, myLastColumn))
End With
'CORPORATE ORDER COMPLIANCE
Dim tblFiltered As ListObject
Dim copyToRng As Range, SDCRange As Range
Set tblFiltered = wb.Worksheets("Corporate Order Compliance").ListObjects("Table_Corporate_Order_Compliance3")
tblFiltered.AutoFilter.ShowAllData
Set SDCRange = wsSDC.ListObjects("Table_SDCdata").Range
Set copyToRng = tblFiltered.HeaderRowRange
'Use Advanced Filter
SDCRange.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=CorpOrdCompCrit, CopyToRange:=copyToRng, Unique:=False
底部是弹出错误的地方,在高级过滤器的这一行上。
'Use Advanced Filter
SDCRange.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=CorpOrdCompCrit, CopyToRange:=copyToRng, Unique:=False
有谁知道为什么会突然发生这种情况以及我该如何解决这个问题?
解决方案
推荐阅读
- ruby-on-rails - 测试自动化 - 新指南
- sql - SQL查询获取最新用户更新记录
- android - Android Studio - 模拟器配置文件和设备配置文件非常不同
- ios - 如何在 xcode/swift 中共享“屏幕截图”整个滚动视图?
- activemq-artemis - 在 JDK10 上启动 JBoss AMQ 代理 Artemis 的最佳方式
- bash - 对于某些字节值,按字节 grep 失败
- webpack-dev-server - Webpack-dev-server 不重建包
- javascript - 循环遍历 api 数据数组以从对象中获取值
- google-app-engine - GKE 内部负载均衡器无法创建
- jquery - 处理付款时运行 JQuery