首页 > 解决方案 > Excel VBA运行时错误450直接引用范围而不是通过中间变量

问题描述

当我尝试直接引用某个范围内的值时,出现运行时错误 450,但如果我使用中间变量,它可以工作。我不明白为什么,所以我担心我将来会在不知道为什么的情况下再次出现错误。

我尝试使用 With ... End With 块,当我直接引用范围时它仍然不起作用。

此代码给出了错误

Public Sub Test_PT()
Dim lol As String

    lol = Worksheets(1).PivotTables("PivotTable2").RowRange(2, 1).Value
    MsgBox (lol)

End Sub

虽然这段代码工作正常

Public Sub Test_PT()
Dim lol As String
Dim rng As Range

    Set rng = Worksheets(1).PivotTables("PivotTable2").RowRange
    lol = rng(2, 1).Value

    MsgBox (lol)

End Sub

我不知道为什么它在第二个代码块中起作用,但在第一个代码块中不起作用。我尝试了设置中间变量的级别的变体。如果我创建一个数据透视表变量并适当地设置它,代码运行良好,但如果我创建一个工作表变量并尝试使用工作表变量引用相同的范围,它就不起作用。

虽然我可以通过使用中间变量来使这段代码工作,但我真的很想了解为什么我需要这样做,以防它出现在其他上下文中。

标签: excelvba

解决方案


RowRange 属性返回一个Range对象,但它不接受任何参数,因此您不能传入任何参数。

lol = Worksheets(1).PivotTables("PivotTable2").RowRange.Cells(2, 1).Value 

对我来说很好,就像

lol = Worksheets(1).PivotTables("PivotTable2").RowRange()(2, 1).Value

推荐阅读