首页 > 解决方案 > 带有高级过滤器的 Excel VBA“错误:Excel 资源不足”

问题描述

我在 VBA 中有使用高级过滤器填充多个表的代码。它之前没有任何错误。我从 Office 2013 升级到 Office 365,突然在代码上收到错误消息...

高级过滤器可以正确运行、填充和过滤表格,但我仍然收到一条错误消息,弹出“Excel 在尝试计算一个或多个公式时用尽资源。因此无法评估这些公式”。如果我按 OK 另一个错误显示"Run-time Error 1004: Advanced Filter method of range class failed"。该文件不包含公式,30500 行,37 列。

编辑(添加尝试过的解决方案)

我在网上搜索了解决方案并尝试了几个,但到目前为止都没有奏效。我尝试了以下方法:

我在代码中使用了大约 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

有谁知道为什么会突然发生这种情况以及我该如何解决这个问题?

标签: excelvbaruntime-erroradvanced-filter

解决方案


推荐阅读