选择整行时,为什么Selection.EntireColumn.Address会返回行引用?

时间:2016-08-04 20:50:17

标签: excel vba excel-vba rows

如果我手动选择任意行,请说出4:4,然后在“立即”窗格中使用:

?Selection.EntireColumn.Address
$1:$1048576

这不是我期待的列引用。

但如果手动选择任意列,请说出D:D,然后在立即窗格中使用:

?Selection.EntireRow.Address
$1:$1048576

获取预期的行引用。

行是否占主导地位?是否有行的战争'

1 个答案:

答案 0 :(得分:3)

答案在于Range.EntireColumn的文档(强调我的):

  

返回一个Range对象,表示整个列 (或列)    包含指定范围

当您选择整行时,包含每行和每列的交集的唯一范围是整个工作表。

同样的事情显然适用于EntireRow - 当您选择整个列时,每列和每一行的交集都是整个工作表。

此时Excel显示地址的方式并不重要(实际上ActiveSheet.Cells.Address也输出$1:$1048576Range("$A:$XFD").Address也是如此。唯一真正重要的是它们是可逆的 - 也就是说你可以取.Address的输出并通过将其传递给Range()来获得同样的东西。

归结为Range("$1:$1048576").Address = Range("$A:$XFD").Address。所有Excel必须使用的是Range本身构建地址以反馈给您。因此,在这个有2个可供选择的独特实例中,它只需选择一个。行符号与Column符号一样有意义,并且在.Cell(r, c)寻址中排在第一位,为什么不呢?在偏好说明中,我真的很高兴他们打这个电话 - 我永远不记得XFD是最大列地址......

还要记住Range对象没有关于它来自何处的信息,因此 知道 它是通过调用来创建的EntireRow而不是EntireColumn用户的期望可能会有所不同,但用户的上下文比Range更多。