【问题标题】:Call Sub within a Sub in Outlook - Autofilter Method of Range Class failed在 Outlook 中的子内调用子 - 范围类的自动筛选方法失败
【发布时间】: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.ReplaceRows.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 为我修复了它。如果您删除该选项,您会得到想要的结果吗?

标签: excel vba outlook


【解决方案1】:

以下是解决的代码:感谢您的所有帮助@RicardoA:

Sub Universal_Dry_Good(sheet)
'
' Universal_Dry_Good Macro
'

sheet.Application.DisplayAlerts = False

sheet.Rows("1:3").Delete

sheet.Rows("1:1").Select

sheet.Range("B2:C2").Select

sheet.Range("$B$2:$X$21200").Autofilter Field:=1, Criteria1:="**TUN**"

sheet.Range("B3:C3").Select


sheet.Range("B3:AA10000").Delete
sheet.Rows("2:2").Select
sheet.ShowAllData
sheet.Cells.Autofilter


sheet.Application.DisplayAlerts = True


End Sub


Sub Pat()
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 2010-12-04
    • 2022-10-06
    相关资源
    最近更新 更多