我正在使用excel宏。在那里我需要生成属于特定月份的所有日期。任何人都可以说如何实现这一目标?
更新 我希望将它作为一组数字接收。我试图使用命名空间“System”下的Date相关函数。但是,它显示错误为“未找到对象或方法”。所以,我正在使用Issan的想法(见下文)。但是,我收到错误,因为“对象不支持此属性或方法”。
修改 我将变量声明为Date后,“对象不支持此属性或方法”错误消失了。我认为VBA中的可用对象取决于声明的变量。谢谢你们所有人。
答案 0 :(得分:2)
(假设您的意思是VBA,因为您说您“正在使用Excel宏”)
以下是如何为特定月份的每一天生成一系列日期(没有足够的信息来建议您想要的格式,所以我假设一组日期)。
Sub GenerateDates()
Dim Days() As Date
Dim DaysInMonth As Long, i As Long
Dim Year As Long, Month As Long
' Example: Feb, 2006 (leap year)
Year = 1996
Month = 2
DaysInMonth = DateSerial(Year, Month + 1, 1) - _
DateSerial(Year, Month, 1)
ReDim Days(1 To DaysInMonth)
For i = 1 To DaysInMonth
Days(i) = DateSerial(Year, Month, i)
Next
'Do as you wish with the array of 29 days
End Sub
工作原理: 您可以使用上面的dateserial数学获得一个月内的天数。这将确保您获得适当的天数,即使考虑闰年。然后你只需重新编写你的天数并填充数组!
答案 1 :(得分:1)
如果你想使用VBA,那么Issun的答案是解决这个问题的最佳方法。
然而,这可能是一个更大问题的一部分,从你的问题来看,我们看不到你想要达到的目标。
不要忘记您也可以使用Excel电子表格来帮助您构建整个应用程序。
例如,您可以使用公式 =EOMONTH(NOW(),0)
来获取当月的最后一天。或者在任何其他日期以您想要的方式进行调整
注意:不要忘记查看Analysis ToolPak Add-in
,以便EOMONTH
公式存在。
[编辑]您可以在this blog's article
上找到有关EOMONTH
的更多信息