将整行定义为范围的语法

时间:2015-06-03 12:45:40

标签: excel vba excel-vba

在Excel中,我可以将整列定义为范围,并对该范围内的单个单元格进行寻址,如:

Sub headache()
   Dim r As Range
   Set r = Range("A:A")
   MsgBox r(1).Address & vbCrLf & r(2).Address
End Sub

如果我尝试用整行

做同样的事情
Sub headache2()
   Dim r As Range
   Set r = Rows(1)
   MsgBox r(1).Address & vbCrLf & r(2).Address
End Sub

我没有得到该范围内的单个细胞。我的解决方法是:

Set r = Range(Cells(1, 1), Cells(1, Columns.Count))

我无法相信这是制作范围的最简单方法...........任何建议??

2 个答案:

答案 0 :(得分:8)

您可以使用:

   Set r = Rows(1).Cells

或只是使用:

   MsgBox r.Cells(1).Address & vbCrLf & r.Cells(2).Address

但请注意,使用索引访问范围的Range(或Cells)属性永远不会仅限于该范围。

答案 1 :(得分:3)

相当于

的行
Set r = Range("A:A")

将是

Set r = Range("1:1")

我很好奇,在Rory的回答基础上进行了这些测试。也许其他人可以解释地址相同而且计数不同。

Sub test()
    Debug.Print Me.Range("A:A").Count '1048576
    Debug.Print Me.Columns(1).Count '1
    Debug.Print Me.Columns(1).Cells.Count '1048576

    Debug.Print Me.Range("1:1").Count '16384
    Debug.Print Me.Rows(1).Count '1
    Debug.Print Me.Rows(1).Cells.Count '16384

    'interseting to me since the counts are different but the addresses are the same
    Debug.Print Me.Range("1:1").Address '$1:$1
    Debug.Print Me.Rows(1).Address '$1:$1
    Debug.Print Me.Rows(1).Cells.Address '$1:$1
End Sub