【发布时间】:2014-06-12 05:01:23
【问题描述】:
如果我有一个变体数组(即元素可以是各种类型)并将数组分配给 Range.Value(或 Range.Formula 的常量)属性,那么 Excel 会自动将传递的值转换为 '基于目标单元格的 NumberFormat 的最佳猜测类型。
例如,在下面所有“存储为字符串的数字”(有意)如果分配给具有“常规”数字格式的单元格,它们将被转换为数字类型。
Sub foo()
Selection.Value = Array( _
100, _
"100", _
"A Cat", _
"2012-05-02", _
"36.4")
End Sub
换句话说,Range.Value = Range.Value 确实不是往返,因为被分配回的数据中的类型信息在分配回 Range.Value 时会被忽略,只有Range.NumberFormat 控制其解释。
是否有任何好的解决方法来防止或处理这种情况?
我唯一能想到的就是遍历数组,测试它是否是一个字符串,如果是,则在前面添加一个撇号。这具有撇号实际存在于工作簿中的不良副作用(尽管出于 Range.Value 等目的而被 Excel 本身忽略)。不可能(据我所知)将数字格式分配给基于整体的单元格(否则可以准备一个具有数据数字格式的数组以“预加载”具有正确数字格式的单元格) .
我经常使用数组和集合来大大提高数据处理的性能,但我希望在最终抽出数据时保留数据类型。
【问题讨论】: