Я новичок в программировании на VBA, и я пытаюсь автоматизировать следующую задачу: у меня есть только 2 таблицы, а именно "Таблица1" и "Подытог", и я хочу взять фильтр, примененный в столбце 3 "Таблица1 "и применить его к первому столбцу" Подытога ";Более того, они находятся на одном листе, и я хотел бы выполнять эту задачу каждый раз, когда я меняю 3-й фильтр на «Таблица1» через дополнительные ячейки, которые вызывают событие Workbook. К сожалению, это дает мне следующую ошибку:
Run Time error -2147417848 (80010108)
Auto filter method of range class failed
Часть, в которой я проверяю, существует ли "Подытог", еще не готова. activetab это "Table1"
' Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
'-----------------------
' Initialization
Dim ActiveSh As Worksheet
Set ActiveSh = Sheets(Sh.Name)
With ActiveSh
activetab = .ListObjects(1).Name ' Table from which get criteria
Subtotale = .ListObjects(2).Name ' Table in which apply it
'------------------------------------------------
' Check if Subtotale (table) exists
'--------------------------------------
' I can filter Subtotale if it exists
With .ListObjects(activetab)
If .AutoFilter.Filters(3).On Then
Criterio = CStr(.AutoFilter.Filters(3).Criteria1)
Criterio = Right(Criterio, Len(Criterio) - 1)
Else
Exit Sub
End If
End With
'-------------------------------------------------------------
' Apply Filter
.ListObjects(Subtotale).Range.AutoFilter Field:=1, Criteria1:=Criterio
' ERROR ON THIS LINE
End With
End Sub