我试图从函数中的范围对象中提取单行。该范围被声明为变体,然后设置为我的工作表中的范围。我希望能够选择一个特定的行,因此我尝试拨打.Rows(indexfrom, indexto)
,但收到错误Object Required
。我尝试过设置compareRow
而不仅仅是声明它,但这似乎并没有改变任何东西。我相信这是因为callLogRange
仅作为范围对象的引用而存在。如果是这种情况,我如何使用引用从范围中获取行?或者,我只是遗漏了一些能让你获得这一行的东西吗?
谢谢。
Dim callLogRange As Variant
callLogRange = (Sheets("CallLog").Range("B2:L" & lastRow))
Dim compareRow As Variant
compareRow = callLogRange.Rows(thisRow, thisRow)
答案 0 :(得分:3)
将它们调暗为Ranges
并使用Set
:
Sub dural()
Dim callLogRange As Range, thisRow As Long, lastRow As Long
lastRow = 13
Set callLogRange = Sheets("CallLog").Range("B2:L" & lastRow)
thisRow = 5
Dim compareRow As Range
Set compareRow = callLogRange.Rows(thisRow)
MsgBox compareRow.Address(0, 0)
End Sub
修改#1:强>
compareRow
的情况下实例化Set
,则实际上是在创建内部 VBA 数组而不是Range
。 答案 1 :(得分:2)
删除括号。
此:
callLogRange = (Sheets("CallLog").Range("B2:L" & lastRow))
将Sheets("CallLog").Range("B2:L" & lastRow)
评估为值。删除括号,您将分配一个2D数组。
或Set
引用,您将分配Range
对象引用,如Gary's answer