Проблема:
Вы определяете свой array
из Range
, который дает вам 2D array
, который вы не можете легко передать в Autofilter
. Таким образом, мы должны изменить его на 1D Array
.
Решение: Измените свой второй код на:
Sub Filter()
Dim Criteria As Variant
Dim cri() As String
Criteria = Worksheets("Sheet1").Range("A1:A140")
ReDim Preserve cri(UBound(Criteria))
For I = LBound(Criteria) To UBound(Criteria)
cri(I) = Criteria(I, 1)
Next
Worksheets("AP").Range("$A$1:$h$100").AutoFilter Field:=1, Criteria1:=cri, Operator:=xlFilterValues
End Sub
Альтернатива: Код, который вы используете, является Фиксированным кодом. Существует один динамический код, который также может быть полезен для вас. Проверьте это Ответ .