Cells()属性如何接受十进制值?

PBe*_*ezy 3 excel vba excel-vba

如果我执行以下代码

Cells(3.0004, 5.604).Interior.ColorIndex = 1
Run Code Online (Sandbox Code Playgroud)

它将为第3行第6列(F3)的单元格着色。它这样做没有抱怨,而且似乎在默默地舍入值。如何以及为什么?

Mat*_*don 5

Range.Cells属性是无参数的。

属性单元格为范围/只读/Excel.Range成员

这意味着Cells(foo, bar)是一个隐式默认成员调用,它解析为以下内容(假设代码是在标准模块中编写的):

 ActiveSheet.Cells.[_Default](foo, bar)
Run Code Online (Sandbox Code Playgroud)

隐藏的Range._Default属性

如果默认成员是在不带参数的情况下调用的,则得到的是对该范围的成员调用Value

如果使用参数调用默认成员,则得到的是对该范围的Item属性的成员调用:

range.item属性

RowIndexColumnIndex参数Variant,所以你可以给它“d”为一列,它理解你想要的第四位。或者,您可以给它任何整数值,它将与之一起使用。

那么,为什么对使用十进制值感到高兴呢?因为它是宽容的,仅此而已:它使隐式类型变窄了从Double到的转换Long5.604并且轻松地实现了这一点6