【问题标题】:'Object variable or With block variable not set' error when setting a range in VBA在 VBA 中设置范围时出现“对象变量或未设置块变量”错误
【发布时间】:2012-10-12 13:52:45
【问题描述】:

我有一个创建数据透视表的函数,但是当我尝试设置一个将被合并并添加标题的范围时出现错误。

在下面的代码中,pivot_title_range 是一个“字符串”变量,在调用函数时是可选的。 title_range 是一个“范围”变量。设置范围的两行(无论用户是否声明pivot_title_range)都会导致相同的错误。

If pivot_title_range = "" Then
    title_range = ActiveSheet.Range("B3:E4")
Else
    title_range = ActiveSheet.Range(pivot_title_range)
End If

这是我得到的错误 -

Run-time error '91':
Object variable or With block variable not set

如果需要,这里有一个完整功能的 Pastebin - http://pastebin.com/L711jayc。违规代码从第 160 行开始。

有人能告诉我我做错了什么吗?谢谢。

【问题讨论】:

    标签: excel-2007 vba range


    【解决方案1】:

    你需要使用

    If pivot_title_range = "" Then
        Set title_range = ActiveSheet.Range("B3:E4")
    Else
        set title_range = ActiveSheet.Range(pivot_title_range)
    End If
    

    因为你定义了title_range as range - 这是一个对象;)

    【讨论】:

    • 如果你和我一样,一直看着这个,看不出有什么区别,那就是“设置”。要将变量作为范围而不是对象,Set var = .Range
    • 这对于使用As Integer 定义的变量似乎没有必要,我正在学习...这是正确的吗? Set 是专门设置Ranges 的吗?
    猜你喜欢
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    相关资源
    最近更新 更多