【发布时间】:2020-06-24 18:06:39
【问题描述】:
下面的代码在另一个 sub 中调用一个 sub(宏)。
当调用第二个子“Universal_Dry_Good(sheet)”时,它会一直运行到
sheet.Range("$B$2:$X$21200").AutoFilter Field:=1, Criteria1:="**TUN**", Operator:=xlFilterValues
“Universal_Dry_Good”在 Excel 中运行良好。只是当我在另一个宏中调用它时它失败了。
目标:当 Sub Cat() 运行时,它会打开一个 Excel 文件,然后在指定的 Excel 文件/工作表上运行“通用干货”。这些宏位于 Outlook 中,并在收到的电子邮件中触发。
为什么叫“万能干货”就不再起作用了?
错误是
范围类的自动过滤方法失败
它确实可以独立工作,也可以用其他操作替换(例如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
【问题讨论】:
-
这个 Universal_Dry_Good 是在 Excel 文件上还是在 Outlook 上?
-
有问题的行在断行之前也缺少下划线_。
-
@RicardoA - Universal_Dry_Good 在 Outlook 中
-
@Ricardo 在尝试了您推荐的编辑后返回了同样的错误(了解 _ 是主要的实质性不同调整,它主要用于解决问题的化妆品,但我确实想让您知道,我很感激推荐的编辑,我试过了)
-
我刚刚创建了一个测试文件,我遇到了同样的问题。删除 Operator:=xlFilterValues 为我修复了它。如果您删除该选项,您会得到想要的结果吗?