如何获取特定月份的日期

时间:2011-12-03 09:04:58

标签: excel vba date excel-vba

我正在使用excel宏。在那里我需要生成属于特定月份的所有日期。任何人都可以说如何实现这一目标?

更新       我希望将它作为一组数字接收。我试图使用命名空间“System”下的Date相关函数。但是,它显示错误为“未找到对象或方法”。所以,我正在使用Issan的想法(见下文)。但是,我收到错误,因为“对象不支持此属性或方法”。

修改       我将变量声明为Date后,“对象不支持此属性或方法”错误消失了。我认为VBA中的可用对象取决于声明的变量。谢谢你们所有人。

2 个答案:

答案 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的更多信息
相关问题