VBA-从今天起获取月份和年份

Unu*_*ill 1 excel vba

我想在今天的VBA中获取今天的月份和年份,我试过,下面是我的代码:

Sub automation()

Dim wsheet As Worksheet
Dim month As Integer
Dim year As Integer

Set wsheet = Application.Workbooks("try").Worksheets("try")

month = Application.WorksheetFunction.month(Date)

year = Application.WorksheetFunction.year(Date)

End Sub
Run Code Online (Sandbox Code Playgroud)

我不确定哪里出了问题,有人可以帮忙吗?如果今天的日期是2017年5月15日,我的预期产量是5个月和2017年.

Dav*_*ens 6

您可能会遇到一些问题,因为您已经隐藏了一些现有函数Month以及Year您的变量名称monthyear.因此,使用不同的变量名称:

Dim m As Integer
Dim y As Integer
Run Code Online (Sandbox Code Playgroud)

然后是:

m = DatePart("m", Date)
y = DatePart("yyyy", Date)
Run Code Online (Sandbox Code Playgroud)

要么:

m = month(Date)
y = year(Date)
Run Code Online (Sandbox Code Playgroud)

在我的Excel 2010(未在2013年测试)中,虽然Month是工作表函数,但由于某种原因,它不会暴露给VBA.如果你想使用WorksheetFunction这些的实例,你可以在技术上使用这个Application.Evaluate方法,如下所示:

m = Evaluate("MONTH(""" & Date & """)")
y = Evaluate("YEAR(""" & Date & """)")
Run Code Online (Sandbox Code Playgroud)

然而,内置VBA.DateTime.MonthVBA.DateTime.Year函数是可用的,这将在上面的第二个例子中使用.

在此输入图像描述

如果由于某种原因必须保留monthyear变量名,那么您需要完全限定函数调用以避免错误:

month = VBA.DateTime.Month(Date)
year = VBA.DateTime.Year(Date)
Run Code Online (Sandbox Code Playgroud)

  • *完全*限定名称实际上是`VBA.DateTime.Month` ;-) (3认同)
  • 确实.但两者都有效.我会更新:) (2认同)

Vit*_*ata 5

像这样更改您的代码:

Sub CurrentDate()

    Dim currentMonth As Long
    Dim currentYear As Long

    currentMonth = Month(Date)
    currentYear = Year(Date)

    Debug.Print currentMonth; currentYear

End Sub
Run Code Online (Sandbox Code Playgroud)

MonthYear是 的函数VBA.DateTime,不要将它们用于变量名。

一般来说,Application.WorksheetFunction没有与当前日期相关的功能,与Excel 库中的VBA.DateTime.MonthVBA.DateTime.Year(或至少我没有找到)任何功能相反。