2016-03-10 163 views
5

我一直在玩VBA中的date,并且无法获得当前月份。通过以下测试得出当前年份和日期似乎非常简单:Excel VBA当前获得月份

MsgBox Year(Date) 
MsgBox Day(Date) 
MsgBox Year(Now) 
MsgBox Day(Now) 

作为一些简单的例子。

但是,如何将当前月份显示为数字(1,2等)或全名?我可以在单元格中使用TODAY(),并将其转换为类似于CurrentMonth = MonthName(Month(Sheet1.Range("A1")))之类的VBA。但我希望能够直接在VBA for Excel中执行此操作。

+2

'月(现在)'不起作用?它应该返回3 –

+0

不,不是因为某些原因,所以我的困惑。 –

+0

'?月(日期),月(现在)'将返回'3,3' - 你看到了什么? –

回答

16

尝试,

debug.print Format(Date, "mmm")  'Mar 
debug.print Format(Date, "mmmm")  'March 
debug.print Int(Format(Date, "m")) '3 
debug.print Int(Format(Date, "mm")) '03 
2
Month(Now) 

返回与当前月份相关的索引号。下面

Jeeped的代码是最紧凑的,但给你的指标是如何工作的想法,下面的代码将返回基于索引月份名称返回:

Dim months(11) As String 
months(0) = "Jan" 
months(1) = "Feb" 
months(2) = "Mar" 
months(3) = "Apr" 
months(4) = "May" 
months(5) = "Jun" 
months(6) = "Jul" 
months(7) = "Aug" 
months(8) = "Sep" 
months(9) = "Oct" 
months(10) = "Nov" 
months(11) = "Dec" 

Dim nowMonth As Integer 
nowMonth = Month(Now) 

For i = 0 To 11 
    If nowMonth = (i + 1) Then 
    MsgBox (months(i)) 
    End If 
Next 
+0

@ScottCraner我发布了一个快速的答案,并且正在研究我刚发布的更完整的代码。无需投票正确答案,因为您不喜欢发布时间。 –

+0

@ScottCraner;) –

相关问题