在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))
我不相信这是最简单的方法......有什么建议吗?
你可以使用。
Set r = Rows(1).Cells
或者直接使用:
MsgBox r.Cells(1).Address & vbCrLf & r.Cells(2).Address
但是请注意,使用索引访问一个范围的Range(或Cells)属性将永远不会仅仅局限于该范围。
行相当于
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