【发布时间】:2020-07-13 18:35:42
【问题描述】:
我正在创建的数据库中使用以下代码行。
Dim yr As String
yr = Format(Date, "yy")
这行代码是从另一个运行良好的数据库中复制而来的。但是,在这个新数据库中,格式行会引发错误 - 运行时错误 13:类型不匹配。我看不出是什么问题。
【问题讨论】:
-
您是否有可能在代码的其他地方重新定义了符号
Date?如果在评估Format行之前调用Debug.Print Date会返回什么? -
@LeeMac 据我所知,您无法重新定义
Date。 VBA 不支持任何类型的重载/重新定义。不过,我不知道发生了什么。 -
@ErikvonAsmuth 谢谢 - 我可能应该在断言之前进行测试。我知道可以重新定义诸如
Val之类的函数(我发现很难),因此对Date做了同样的假设。 -
主要区别在于
Date不仅是一个函数,也是一个核心数据类型,所以如果你尝试调用任何日期,它会产生很多更多的编译错误.对于函数,你确实有上下文,你可以在不同的上下文中声明它们。Val的完全限定名称是VBA.Val,您可以在不同的上下文中重新声明它。 -
我唯一能想到的是@LeeMac 实际上一直都是正确的,但不是
Date,而是Format在当前上下文中声明。尝试使用全名:yr = VBA.Format(Date, "yy")