Код ниже вызывает подпрограмму (макрос) в другом подпрограмме.
При вызове второго Sub "Universal_Dry_Good (лист) он работает до
sheet.Range("$B$2:$X$21200").AutoFilter Field:=1, Criteria1:="**TUN**", Operator:=xlFilterValues
"Universal_Dry_Good" прекрасно работает в Excel. Это просто, когда я вызываю его внутри другого макроса, он терпит неудачу.
Цель: при запуске Sub Cat () он открывает файл Excel, а затем запускает «Универсальный сухой товар» для указанного файла / листа Excel. Эти макросы находятся в Outlook и запускаются с входящих сообщений электронной почты.
Почему когда-то называется "Universal Dry Good", он больше не работает?
Ошибка
Ошибка метода автофильтра класса Range
Он работает независимо, также при замене другими действиями (например, Columns.Replace
, Rows.Delete
и т. Д.).
Sub Universal_Dry_Good(sheet)
'
' Universal_Dry_Good Macro
'
sheet.Rows("1:3").Delete
sheet.Rows("1:3").Delete Shift:=xlUp
'ERROR IN THE LINE BELOW
sheet.Range("$B$2:$X$21200").AutoFilter Field:=1, Criteria1:="**TUN**", _
Operator:=xlFilterValues
sheet.Range("B3:C3").Select
sheet.Range(Selection, Selection.End(xlDown)).Select
sheet.Range("B3:AA10000").Select
Selection.EntireRow.Delete
sheet.Rows("2:2").Select
sheet.ActiveSheet.ShowAllData
Selection.AutoFilter
End Sub
Sub Cat()
Set xlApp = CreateObject("Excel.Application")
xlApp.Application.Visible = True
xlApp.Workbooks.Open "---------"
Dim sheet As Object
Set sheet = xlApp.Worksheets("Report 1")
Universal_Dry_Good sheet
End Sub