gpt4 book ai didi

vba 格式函数错误地将数字解释为日期

转载 作者:行者123 更新时间:2023-12-03 11:19:07 25 4
gpt4 key购买 nike

为什么 VBA 将“093 0005”解释为日期?

在 MS Access VBA 中,以下行:
格式(“093 0005”,“0000000000000”)返回“0000000034090”

34090 是日期 5/1/1993 的 vba 数字等效值。

在大多数情况下,不会发生这种日期假设。例如:

Format("092 0250", "0000000000000") 返回 "092 0250",即不尝试应用格式。

Format("0930005", "0000000000000") 按预期返回“0000000930005”。

到目前为止,我提出的唯一解决方案是在入站字符串包含空格或使用 IsDate 函数时使用此函数进行编码。

最佳答案

这与 Access 本身无关。在任何 VBA 中,如果文本由 SPACE 分隔,则格式函数的行为将如下所示。 , HYPHEN ,或 DASH .所以这

Debug.Print Format("093 0005", "0000000000000") 
Debug.Print Format("093/0005", "0000000000000")
Debug.Print Format("093-0005", "0000000000000")

将返回 0000000034090
它会尝试将其转换为 日期 号码 如果它是一个有效的日期或数字,那么它会显示它的等价数字。如果它不是一个日期或数字等价物,那么它将保持原样。我相信这是因为 Format函数无法确定值的“格式”并将其作为字符串。这类似于然后说 Format("Blah", "0000000000000") .很明显,您不会期望 Format函数将其格式化为 000000000blah .

不幸的是,我在 MS 知识库中找不到任何解释 Format 函数行为如此的文章。

我过去发现绕过它的唯一方法是使用 VAL函数将其转换为数字。所以
Debug.Print Format(Val("093 0005"), "0000000000000") 

会给你想要的结果 0000000930005
但是,如果数字由 HYPHEN 分隔或 DASH然后是 VAL功能没用。为此,您必须使用 REPLACE替换 HYPHENDASHSPACE .但是我怀疑您是否会格式化具有 HYPHEN 的数字。或 DASH .

关于vba 格式函数错误地将数字解释为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11801089/

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