如果我手动选择任意行,例如 4:4
,然后在“立即” Pane 中使用:
?Selection.EntireColumn.Address
$1:$1048576
这不是我期望的专栏引用。
但是,如果手动选择任意列,例如 D:D
,然后在“立即” Pane 中使用:
?Selection.EntireRow.Address
$1:$1048576
我确实获得了预期的行引用。
行是否更占主导地位?是否有行列之战
最佳答案
答案就在 Range.EntireColumn 的文档中(强调我的):
Returns a Range object that represents the entire column (or columns) that contains the specified range.
当您选择整行时,包含每行和每列交集的唯一范围是整个工作表。
同样的事情显然也适用于EntireRow
- 当您选择整个列时,每列和每行的交集就是整个工作表。
此时,Excel 如何显示地址并不重要(事实上,ActiveSheet.Cells.Address
也会输出 $1:$1048576
, 也是如此) >范围("$A:$XFD").地址
)。唯一真正重要的是它们是可逆的 - 也就是说,您可以获取 .Address
的输出,并通过将其传递给 Range()
来获取相同的内容.
它归结为Range("$1:$1048576").Address = Range("$A:$XFD").Address
。当 Excel 构建反馈给您的地址时,所需要处理的只是 Range
本身。因此,在这个独特的实例中,它有 2 个可供选择,它只是选择一个。行表示法与列表示法一样有意义,并且在 .Cell(r, c)
寻址中排在第一位,所以为什么不呢?就偏好而言,我实际上很高兴他们做出这个调用 - 我从来不记得 XFD
是最大列地址...
还请记住,Range
对象没有关于它来自何处的信息,因此它不知道它是用对 EntireRow
的调用,而不是对 EntireColumn
的调用。 用户的期望可能不同,但用户拥有比范围
更多的上下文。
关于vba - 当选择整行时,为什么 Selection.EntireColumn.Address 返回行引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38777170/