首页 > 解决方案 > 运行时错误 450;为什么我不能调试它?

问题描述

为什么每当我录制一个宏并想设置一个变量时——对话框会自动提示错误数量的参数或无效的属性分配。有谁能够帮我?因为我仍然是使用 VBA 的新手。

Sub Advanced_Filter()
'
' Advanced_Filter Macro
'
' Keyboard Shortcut: Ctrl+Shift+A
'
    Set DataSH = Sheet1
        DataSH.Range("B8").CurrentRegion.Range.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "L8:L9"), CopyToRange:=Range("N8:T8"), Unique:=False
End Sub

标签: vbaexcel

解决方案


如果 Sheet1 是活动工作表,则 Range("L8:L9") 和 Range("N8:T8") 仅“属于”Sheet1。您需要为所有范围/单元格引用提供正确的父工作表引用。

为了减轻多重分配,一个 With ... End With 块可能会有所帮助。请注意,在块内,Range 被称为 .Range。这将传递父工作表引用。

option explicit

Sub Advanced_Filter()
'
' Advanced_Filter Macro
'
' Keyboard Shortcut: Ctrl+Shift+A
'

    dim DataSH as worksheet
    Set DataSH = Sheet1

    with DataSH 
        .Range("B8").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
                     CriteriaRange:=.Range("L8:L9"), CopyToRange:=.Range("N8:T8"), _
                     Unique:=False
    end with

End Sub

推荐阅读