2016-03-10 27 views
5

Ho giocato con lo date in VBA e non posso ottenere il mese corrente. Sembra molto semplice ottenere l'anno e il giorno corrente, come testato con quanto segue:Excel VBA corrente ottenga il mese

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

Come alcuni semplici esempi.

Ma come è possibile visualizzare il mese corrente come numero (1, 2 ecc.) O come nome completo? Potrei usare lo TODAY() in una cella e convertirlo in VBA con qualcosa come CurrentMonth = MonthName(Month(Sheet1.Range("A1"))). Ma mi piacerebbe essere in grado di farlo direttamente in VBA per Excel.

+2

'Mese (ora)' non funziona? Dovrebbe restituire 3 –

+0

No, non per qualche motivo, quindi la mia confusione. –

+0

'? Month (date), month (now)' restituirà '3, 3' - cosa vedi? –

risposta

16

prova,

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) 

Restituisce il numero di indice associato al mese corrente.

codice di Jeeped di sotto è il più compatto, ma per dare un'idea di come gli indici funzionano, il seguente codice restituirà il nome del mese in base all'indice restituito:

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 Ho inviato una risposta rapida e stavo lavorando al codice più completo, che ho appena pubblicato. Non c'è bisogno di votare giù una risposta corretta perché non ti piace quando è stata pubblicata. –

+0

@ScottCraner;) –