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

时间:2018-12-18 19:02:44

标签: excel vba excel-vba

如果我执行以下代码

Cells(3.0004, 5.604).Interior.ColorIndex = 1

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

1 个答案:

答案 0 :(得分:4)

Range.Cells属性是无参数的。

Property Cells As Range / read-only / member of Excel.Range

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

 ActiveSheet.Cells.[_Default](foo, bar)

hidden Range._Default property

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

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

range.item property

RowIndexColumnIndex参数是Variant,因此您可以将其指定为列的“ D”,并且它理解您想要第4个。或者,您可以给它提供任何整数值,它将与之一起使用。

那么为什么对使用十进制值感到高兴呢?因为它是宽容的,仅此而已:它可以将隐式变窄类型从Double转换为Long,并轻松地将5.604变成6