gpt4 book ai didi

vba - 分配给范围会忽略分配的数据类型 - 解决方法?

转载 作者:行者123 更新时间:2023-12-04 20:43:56 25 4
gpt4 key购买 nike

如果我有一个变量数组(即元素可以是各种类型)并将数组分配给 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 本身忽略)。不可能(据我所知)将数字格式分配给基于整体的单元格(否则可以准备一个具有数据数字格式的数组以“预加载”具有正确数字格式的单元格) .

我经常使用数组和集合来大大提高数据处理的性能,但我希望在最终将数据抽出时保留数据类型。

最佳答案

您可以通过在任何文本值前面放置一个撇号来解决此问题:

Sub foo()

Selection.Value = Array( _
100, _
"'100", _
"A Cat", _
"'2012-05-02", _
"'36.4")

End Sub

关于vba - 分配给范围会忽略分配的数据类型 - 解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24172080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com