我想在今天的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年.
您可能会遇到一些问题,因为您已经隐藏了一些现有函数Month以及Year您的变量名称month和year.因此,使用不同的变量名称:
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.Month和VBA.DateTime.Year函数是可用的,这将在上面的第二个例子中使用.
如果由于某种原因必须保留month和year变量名,那么您需要完全限定函数调用以避免错误:
month = VBA.DateTime.Month(Date)
year = VBA.DateTime.Year(Date)
Run Code Online (Sandbox Code Playgroud)
像这样更改您的代码:
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)
Month和Year是 的函数VBA.DateTime,不要将它们用于变量名。
一般来说,Application.WorksheetFunction没有与当前日期相关的功能,与Excel 库中的VBA.DateTime.Month或VBA.DateTime.Year(或至少我没有找到)任何功能相反。