通过直接引用范围而不是通过中间变量来引用Excel VBA运行时错误450

时间:2019-06-18 06:12:05

标签: excel vba

当我尝试直接引用范围内的值时,出现运行时错误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

我不知道为什么它可以在第二个代码块中工作,但不能在第一个代码块中工作。我尝试设置中间变量的级别有所不同。如果我创建数据透视表变量并进行了适当设置,则代码可以正常运行,但是如果我创建工作表变量并尝试使用工作表变量引用相同的范围,则它将不起作用。

虽然我可以使用中间变量来使这段代码正常工作,但我真的很想了解为什么要在其他情况下出现这种情况。

1 个答案:

答案 0 :(得分:1)

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

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

对我来说很好,

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