【问题标题】:How to get current Year Using VBA [closed]如何使用 VBA 获取当前年份 [关闭]
【发布时间】:2014-06-22 04:21:28
【问题描述】:

嗨,我正在使用这个过去的帖子How To Get The Current Year Using Vba

答案是使用Year(Date),所以我是这样实现的:

Dim a As Integer
a = Year(Date)

但是当我尝试使用它时,我得到一个错误

Runtime 13 : Type Mismatch

【问题讨论】:

  • 显示引发错误的整行代码。根据您的表现,我们不知道如何解决。
  • 我在想Date 真的应该是一个占位符。试试Year(Now())
  • @sharkantipav 考虑到这对我来说非常有效,您可能在其他地方遇到了不同的问题,当您将代码更改为使用 DatePart
  • 我同意@psubsee2003,这个决议似乎完全是巧合。其他事情正在发生。
  • 你也可以试试VBA.Year(Date)。或者您可能缺少库参考。 (在 VBE 中的工具 > 参考下查看)。

标签: excel vba


【解决方案1】:

我怀疑您的类型不匹配在其他地方,因为Year(Date) 是有效的。另一种选择是使用Year(Now)

我怀疑你已经将你试图分配的变量声明为奇怪的东西,因为 VBA 会为你做很多奇怪的转换

Dim a As String
a = Year(Now)   ' "2014"

Dim b As Double
b = Year(Now)   '2014

Dim c As Integer
c = Year(Now)   '2014

Dim d As Date
d = Year(Date)  '#7/6/1905#

Dim e
e = Year(Now)   ' 2014 (implicitly cast to integer)

确保在模块顶部设置了Option Explicit,然后编译代码。

【讨论】:

  • 我都试过了......并且在那一行得到了同样的错误......我什至尝试了类似a=Year(Date)同样的错误
  • a 的数据类型是什么?
  • 试过integerstringdouble同样的错误
  • 它实际上就在这行代码上?你不猜吗?你的功能还有什么?你能在一个空白模块中创建另一个子并将我的代码粘贴进去并让它运行时出错吗?
【解决方案2】:

在 Excel VBA 中,您想使用DATEPART。假设您尝试从中获取年份的数据是有效的(从您问题中的少量信息中很难知道这一点)。

来自here

MS EXCEL:日期部分函数 (VBA)

通过语法和示例了解如何使用 Excel DATEPART 函数。

描述

Microsoft Excel DATEPART 函数返回一个指定部分 给定日期。

语法

Microsoft Excel DATEPART 函数的语法是:

DatePart(间隔,日期,[firstdayofweek],[firstweekofyear])

还有这个具体的例子:

DatePart("yyyy", "15/10/2012") 将返回 2012

【讨论】:

  • Datepart 完美运行。谢谢
  • 刚刚做到了……它不想在第一个 10 分钟内这样做;)
  • 虽然这个答案最终解决了 OP 的问题,但我觉得这是一种误导,因为它确实没有回答“我为什么会收到这个错误”的问题。 OP 尝试的解决方案似乎完全有效,因此解决问题的事实似乎是巧合。
  • 无论如何,我认为这将是 OP 链接的问题的一个很好的答案。
  • @psubsee2003 我没有将其解读为“为什么会出现此错误”,而只是查看标题“如何使用 VBA 获取当前年份”。无论哪种方式,OP都很高兴,这里没什么可看的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-10
  • 2014-04-25
  • 2018-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多