Я пытаюсь отфильтровать таблицу на основе ячейки в другой рабочей книге, ссылка на фильтр будет в рабочей книге "ReportWB" и листе "Project Summary Detail", ячейка "I1" (которая, как я полагаю, охвачена строкой "Region"? Пользователь должен ввести число в "Region", а затем он должен отфильтровать таблицу в рабочей книге "DetailData", а затем скопировать этот отфильтрованный диапазон. В данный момент я получаю ошибку в части автофильтра, я полагаю, из-за того, что критерии указаны неправильно. Ошибка - ошибка времени выполнения "1004": метод AutoFilter класса Range не выполнен в этой строке кодаWith DetailData Sheets("Project Detail").Range("A1").AutoFilter field = 2, Criteria1:=ReportWB.Sheets("Project Summary Data").Range("I1") DetailData.Sheets("Project Detail").Range("A1").CurrentRegion.Copy
Dim region As String
Dim Report As Worksheet
Dim Data As Worksheet
Dim count_col As Integer
Dim count_row As Integer
Dim tbl As ListObject
Dim DetailData As Workbook
Dim ReportWB As Workbook
Set Report = ThisWorkbook.Sheets("Project Cost Report Summary")
Set Data = ThisWorkbook.Sheets("Project Summary Data")
region = Data.Range("I1").Text
Set tbl = Report.ListObjects("Table2")
'Clean up Summary Sheet
Rows("9:3000").Select
Range("A3000").Activate
Selection.Delete Shift:=xlUp
Range("B7").Select
Selection.AutoFill Destination:=Range("Table2[Level]"), Type:=xlFillDefault
Range("Table2[Level]").Select
Columns("A:C").Select
Selection.EntireColumn.Hidden = True
'Clear Contents of Project cost Report Detail Tab
Sheets("Project Detail").Select
Cells.Select
Selection.ClearContents
'Clear Contents of Project cost Report Summary Tab
Sheets("Project Cost Report Summary").Select
Range("Table2[[Task Code]:[Budget $''s]]").Select
Selection.ClearContents
'## Open workbooks first:
Set DetailData = Workbooks.Open("C:\Users\sbossert\Documents\Macro Project Detail - All Data.xlsx")
Set ReportWB = Workbooks.Open("C:\Users\sbossert\Documents\Mid-Level Project Report - Template Filter data.xlsm")
'Now, copy what you want from Detail:
With DetailData
Sheets("Project Detail").Range("A1").AutoFilter field = 2, Criteria1:=ReportWB.Sheets("Project Summary Data").Range("I1")
DetailData.Sheets("Project Detail").Range("A1").CurrentRegion.Copy
'Now, paste to project detail worksheet:
ReportWB.Sheets("Project Detail").Range("A1").PasteSpecial
'Close x:
DetailData.Close
'determine the size of the range
Data.Activate
count_col = WorksheetFunction.CountA(Range("A1", Range("A1").End(xlToRight)))
count_row = WorksheetFunction.CountA(Range("A1", Range("A1").End(xlDown)))
'filter data on Raw Data tab
Data.Range("A1").AutoFilter field:=1, Criteria1:=region
'Copy and Paste to Cost Report
Data.Range(Cells(2, 2), Cells(count_row, count_col)).SpecialCells(xlCellTypeVisible).Copy
tbl.DataBodyRange(1, 4).PasteSpecial
Application.CutCopyMode = False
'Show Data and Remove the Filter
With Data
.ShowAllData
.AutoFilterMode = False
'Project Detail have only project values
'Refresh All Data
End With
ReportWB.RefreshAll
End With
End Sub```