如果我手动选择任意行,请说出4:4
,然后在“立即”窗格中使用:
?Selection.EntireColumn.Address
$1:$1048576
这不是我期待的列引用。
但如果手动选择任意列,请说出D:D
,然后在立即窗格中使用:
?Selection.EntireRow.Address
$1:$1048576
我做获取预期的行引用。
行是否占主导地位?是否有行的战争'
答案 0 :(得分:3)
答案在于Range.EntireColumn的文档(强调我的):
返回一个Range对象,表示整个列 (或列) 包含指定范围 。
当您选择整行时,包含每行和每列的交集的唯一范围是整个工作表。
同样的事情显然适用于EntireRow
- 当您选择整个列时,每列和每一行的交集都是整个工作表。
此时Excel显示地址的方式并不重要(实际上ActiveSheet.Cells.Address
也输出$1:$1048576
,Range("$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
更多。