2016-03-10 2 views
5

Я играл с date в VBA и не могу получить текущий месяц. По вашему запросу было бы очень просто провести текущий год и день, а именно:Excel VBA current get month

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

В качестве нескольких простых примеров.

Но как можно показать текущий месяц как число (1, 2 и т. Д.) Или полное имя? Я мог бы использовать TODAY() в ячейке и преобразовать это в VBA с чем-то вроде CurrentMonth = MonthName(Month(Sheet1.Range("A1"))). Но я хотел бы иметь возможность сделать это прямо в VBA для Excel.

+2

'Месяц (сейчас)' не работает? Он должен вернуться 3 –

+0

Нет, это не по какой-то причине, отсюда и мое замешательство. –

+0

'? Month (date), month (now)' will return '3, 3' - что вы видите? –

ответ

16

Try,

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;) –