当选中整行时,为什么Selection.EntireColumn.Address返回行引用?
如果我手动select一个任意的行,比如4:4
,然后在“立即”窗格中使用:
?Selection.EntireColumn.Address $1:$1048576
这不是我期待的专栏文章。
但是,如果手动select一个任意的列,说D:D
,然后在即时窗格中使用:
?Selection.EntireRow.Address $1:$1048576
我得到了预期的行参考。
行更占优势吗? 是否有行的战争?
答案在于Range.EntireColumn的文档(重点是我的):
返回一个Range对象,它表示包含指定范围的整个列(或多个列) 。
当您select整行时,包含每行和每列的交集的唯一范围是整个工作表。
显然, EntireRow
– 当你select一个整列时,每一列和每一行的交集就是整个工作表。
此时,Excel如何显示地址并不重要(事实上, ActiveSheet.Cells.Address
也输出$1:$1048576
,就像Range("$A:$XFD").Address
)一样。 唯一真正重要的是它们是可逆的 – 那就是你可以把.Address
的输出.Address
回给Range()
。
它归结为Range("$1:$1048576").Address = Range("$A:$XFD").Address
。 所有Excel都必须使用的Range
本身,当它build立的地址反馈给你。 所以在这个有2个可供select的独特实例中,它只是select一个。 行符号与列符号一样有意义,并且首先进入.Cell(r, c)
寻址,为什么不呢? 在一个优先注意,我真的很高兴他们打这个电话 – 我从来没有记得, XFD
是最大的列地址…
还要记住, Range
对象没有关于它来自哪里的信息,所以它不知道它是通过对EntireRow
而不是EntireColumn
的调用来创build的。 用户的期望可能会有所不同,但是用户再次拥有比Range
更多的上下文。