У меня есть код ниже, который все прекрасно работал. Я добавил раздел для фильтрации различных именованных таблиц на соответствующих листах, удаления видимых строк, подсчета строк и фильтрации и повторного удаления. Этот раздел кода [после «Next kfp 'Фильтр таблиц и удаление», добавивший много места для поиска проще) работал как отдельный макрос в другой книге, но он ничего не делает при добавлении в этот код (я только что добавил часть кода до и после проблемной части. Если потребуется больше, я могу отправить весь код, если это поможет).
Любая помощь будет оценена.
For kfp = 0 To UBound(FillPages)
' Get the page and table information.
Set sh = Sheets(FillPages(kfp))
TableName = "Table_" & Replace(sh.Name, " ", "_")
Set tbl = sh.ListObjects(TableName)
'clear out any old data in the table
ClearTable sh.Name, TableName
' Loop through headers on table on the sheet
For kth = 1 To tbl.HeaderRowRange.Count
HeaderNameT = tbl.HeaderRowRange(kth)
' Does the template have a match in the map
Set rng = Range("Table_Map[Template]").Find(HeaderNameT, LookIn:=xlValues, lookat:=xlWhole)
' If a match is found
If Not rng Is Nothing Then
HeaderNameD = rng.Offset(0, -1)
' copy the column from data to template
Range("Table_Data[" & HeaderNameD & "]").Copy Range(TableName & "[" & HeaderNameT & "]")
End If
Next kth
Next kfp
'Filter tables and Delete
Dim i As Long
'Filter, delete, count: Out of Stock sheet
With Worksheets("Out of Stock").ListObjects("Table_Out_of_Stock")
.Range.AutoFilter
.Range.AutoFilter Field:=.ListColumns("Roster").Index, Criteria1:="<>4"
.Range.Offset(1).EntireRow.Delete
.Range.AutoFilter
.Range.AutoFilter Field:=.ListColumns("RP Type").Index, Criteria1:="=NoRoster"
.Range.Offset(1).EntireRow.Delete
.Range.AutoFilter
.Range.AutoFilter Field:=.ListColumns("SOH").Index, Criteria1:="<>0"
.Range.Offset(1).EntireRow.Delete
.Range.AutoFilter
End With
' Count Instances and add to cells: Out of Stock sheet
Dim InstVal As Integer
InstVal = Worksheets("Out of Stock").ListObjects("Table_Out_of_Stock").ListRows.Count
Worksheets("Out of Stock").Range("O14") = InstVal
With Worksheets("Out of Stock").ListObjects("Table_Out_of_Stock")
.Range.AutoFilter
.Range.AutoFilter Field:=.ListColumns("SOH").Index, Criteria1:="<>0"
.Range.Offset(1).EntireRow.Delete
.Range.AutoFilter
End With
'Filter, delete, count: Overstock
With Worksheets("Overstock").ListObjects("Table_Overstock")
.Range.AutoFilter
.Range.AutoFilter Field:=.ListColumns("Ranging").Index, Criteria1:="<>4"
.Range.Offset(1).EntireRow.Delete
.Range.AutoFilter
End With
' Count Instances and add to cells: Out of Stock sheet
InstVal = Worksheets("Overstock").ListObjects("Table_Overstock").ListRows.Count
Worksheets("Overstock").Range("P14") = InstVal
'Filter, delete, count: Outdated Stock Counts
With Worksheets("Outdated Stock Counts").ListObjects("Table_Outdated_Stock_Counts")
.Range.AutoFilter
.Range.AutoFilter Field:=.ListColumns("Ranging").Index, Criteria1:="<>4"
.Range.Offset(1).EntireRow.Delete
.Range.AutoFilter
.Range.AutoFilter Field:=.ListColumns("SOH").Index, Criteria1:="=0"
.Range.Offset(1).EntireRow.Delete
.Range.AutoFilter
End With
' Count Instances and add to cells: Outdated Stock Counts
InstVal = Worksheets("Outdated Stock Counts").ListObjects("Table_Outdated Stock Counts").ListRows.Count
Worksheets("Outdated Stock Counts").Range("N14") = InstVal
'Filter, delete, count: Dormant Stock
With Worksheets("Dormant Stock").ListObjects("Table_Dormant_Stock")
.Range.AutoFilter
.Range.AutoFilter Field:=.ListColumns("Ranging").Index, Criteria1:="<>4"
.Range.Offset(1).EntireRow.Delete
.Range.AutoFilter
.Range.AutoFilter Field:=.ListColumns("SOH").Index, Criteria1:="<=0"
.Range.Offset(1).EntireRow.Delete
.Range.AutoFilter
End With
' Count Instances and add to cells: Dormant Stock
InstVal = Worksheets("Dormant Stock").ListObjects("Table_Dormant_Stock").ListRows.Count
Worksheets("Dormant Stock").Range("L14") = InstVal
'Filter, delete, count: Negative Stock
With Worksheets("Negative Stock").ListObjects("Table_Negative_Stock")
.Range.AutoFilter
.Range.AutoFilter Field:=.ListColumns("Ranging").Index, Criteria1:="<>4"
.Range.Offset(1).EntireRow.Delete
.Range.AutoFilter
End With
' Count Instances and add to cells: Negative Stock
InstVal = Worksheets("Negative Stock").ListObjects("Table_Negative_Stock").ListRows.Count
Worksheets("Negative Stock").Range("M14") = InstVal
With Worksheets("Negative Stock").ListObjects("Table_Negative_Stock")
.Range.AutoFilter
.Range.AutoFilter Field:=.ListColumns("SOH").Index, Criteria1:=">=0"
.Range.Offset(1).EntireRow.Delete
.Range.AutoFilter
End With
'Error Handling section.
ErrorHandler:
Select Case Err.Number
'Common error #1: file path or workbook name is wrong.
Case 1004
Application.ScreenUpdating = True
MsgBox "The workbook could not be found in the path" & vbCrLf & MyPath & "."
Exit Sub
'General case: turn screenupdating back on, and exit.
Case Else
Application.ScreenUpdating = True
Exit Sub
End Select
End Sub