Я использую расширенный фильтр для копирования данных с основной рабочей таблицы 'SD C' и добавления в различные таблицы рабочих книг с меньшим количеством заголовков. Критерии фильтра создаются на другом листе.
Теперь я использую тот же код для тех же данных, но добавляю его в другие таблицы рабочих книг ранее в коде, и он работает абсолютно нормально. На прошлой неделе тот же код работал для этой новой книги, но сегодня он решил начать выдавать ошибки .... без изменения какого-либо кода.
Я потратил 6 часов, пытаясь выяснить проблему, но нет пока успехи.
Я сделал пару тестов, чтобы увидеть, где возникают проблемы:
- Когда я использую те же заголовки, что и таблица назначения (но помещаю их на новый лист ) и вручную выполните расширенный фильтр, он работает нормально.
- Когда я попытался вручную выполнить расширенный фильтр для одной целевой книги, это сработало, а затем в следующий раз после этого ничего не произошло. Очень странно ...
- Я проверил все заголовки, чтобы убедиться, что они совпадают, пробелов нигде нет. Тем не менее, когда я запускаю расширенный фильтр вручную, ничего не добавляется к таблицам назначения.
- Я проверил диапазоны в окне просмотра, когда макрос запускается шаг за шагом, и все выглядит нормально. (пока не появится ошибка с расширенным фильтром)
Я не понимаю, как это работало раньше, и внезапно начал выдавать ошибки. Тогда это работало для одного стола, а затем нет. Кажется, это одна книга, в которой есть проблемы, или, может быть, я использую несколько критериев для одного столбца? (но это работает вручную). Чего мне не хватает?
Я получаю сообщение об ошибке, когда расширенный фильтр должен запускаться в макросе: Ошибка времени выполнения '1004': сбой метода AdvancedFilter класса диапазона в строке кода
SDCRange.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=OOSdirectCrit, CopyToRange:=copyToRng, Unique:=False
Код, который я использую в настоящее время (который работает ранее в коде, просто добавляя в разные таблицы книги)
Sub StockAvail(wb As Workbook, ws As Worksheet)
Dim SATemp As String
Dim SATempF As String
Dim wsSDC As Worksheet
Set wsSDC = MainWB.Worksheets(1)
SATemp = Dir(TemplPath & "\*Stock Availability*.xls*")
SATempF = TemplPath & "\" & SATemp
'Check if workbook open if not open it
If Not wbOpen(SATempF, wb) Then
Set wb = Workbooks.Open(SATempF)
End If
'Call function add Vendor,Region, etc
Call VInfoAdd(wb, ws)
'Create Filter Criteria ranges
With MainWB.Worksheets.Add
.Name = "FltrCrit"
Dim FltrCrit As Worksheet
Set FltrCrit = MainWB.Worksheets("FltrCrit")
End With
'Create Filter Criteria ranges
With FltrCrit
Dim OOSdirectCrit As Range
Dim myLastColumn As Long
'Create OOS - Direct Filter Criteria Range
.Cells(1, "A") = "Out of Stock - Direct"
.Cells(2, "A") = "MS"
.Cells(3, "A") = "=4"
.Cells(2, "B") = "SOH"
.Cells(3, "B") = "=0"
.Cells(2, "C") = "Sup.Vend."
.Cells(3, "C") = "<>MA05"
.Cells(2, "D") = "Sup.Vend."
.Cells(3, "D") = "<>MA07"
.Cells(2, "E") = "Sup.Vend."
.Cells(3, "E") = "<>MA09"
.Cells(2, "F") = "Sup.Vend."
.Cells(3, "F") = "<>MA11"
'get last column, set range name
With .Cells
'find last column of data cell range
myLastColumn = .Cells(2, Columns.Count).End(xlToLeft).Column
'specify cell range
Set OOSdirectCrit = .Range(.Cells(2, "A:A"), .Cells(3, myLastColumn))
End With
'Copy Filtered data to specified tables
Dim tblFiltered As ListObject
Dim copyToRng As Range, SDCRange As Range
'OOS - Direct
'Store Filtered table in variable
Set tblFiltered = wb.Worksheets("Out of Stock (Direct Supply)").ListObjects("Table_Out_of_Stock_Direct")
'Remove Filtered table Filters
tblFiltered.AutoFilter.ShowAllData
'Set Copy to range on Filtered sheet table
Set copyToRng = tblFiltered.HeaderRowRange
Set SDCRange = wsSDC.ListObjects("Table_SDCdata").Range
'Use Advanced Filter
SDCRange.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=OOSdirectCrit, CopyToRange:=copyToRng, Unique:=False
Код для 2 отдельные таблицы с разными критериями, первая из которых исключает коды D C, а вторая - только коды D C. Я включил только первый код выше, так как это первая проблема (2-я такая же, но должна быть исправлена, если я могу найти проблему с первой, так как это та же проблема)
Любая помощь будет с благодарностью, я заблудился в том, где искать проблемы с этим на данный момент.