gpt4 book ai didi

vba - 如何调整 32 位和 64 位 Excel VBA 日期处理之间的差异?

转载 作者:行者123 更新时间:2023-12-02 06:50:37 25 4
gpt4 key购买 nike

问题:

64 位 Excel VBA 有一个坏习惯,即在将数组分配给某个范围时将数组日期转换为数字。另一方面,32 位 VBA 保留日期格式。

示例:

下面是一些示例代码,用于演示不同的日期处理:

Sub test()
Dim arr(0 to 1) As Variant
arr(0) = "Text"
arr(1) = #9/12/2007#
ActiveSheet.Range("A1:B1") = arr
End Sub

(请注意,如果使用单个日期值,则在 64 位 Excel 中不会转换日期;必须存在第一个文本值)

结果:

在 32 位 Excel 中运行时,输出为 Text, 9/12/2007

在 64 位 Excel 中运行时,输出为 Text, 39337

就好像 64 位 VBA 仅对所有范围对象使用 Value2 属性。

问题:

如何在不编写函数来处理所有数组写入的情况下使 64 位 VBA 表现得像 32 位 VBA?

只是为了阻止可能的善意回应:我知道这些单元格之间的基本公式保持相同。然而,32 位 Excel 会自动将正确的单元格设置为日期格式,这极大地简化了我的代码。

最佳答案

我之前遇到过这样的问题,并通过确保单元格格式始终设置为日期格式来解决它。

像这样的事情应该可以解决问题:

Range("A1").Select
Selection.Format = "long date"

关于vba - 如何调整 32 位和 64 位 Excel VBA 日期处理之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12356303/

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