Excel VBA当前获得月份

时间:2016-03-10 15:47:17

标签: excel excel-vba vba

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

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

作为一些简单的例子。

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

6 个答案:

答案 0 :(得分:25)

尝试,

<% @all_posts.each_with_index do |p, a| %>
  <%= a %>
  <%= p.name %>
<% end %>

答案 1 :(得分:3)

 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

答案 2 :(得分:3)

一种真正有用且简单的方法是将格式函数与日期结合在一起。

示例(假设今天是2019年10月23日):

要获取当前月份作为原始问题中的数字:

MsgBox Format(Date, "mm")

^将返回:10

要获取当前月份为短文本:

MsgBox Format(Date, "mmm")

^将返回:十月

要获取带有全文的当前月份:

MsgBox Format(Date, "mmmm")

^将返回:十月

您也可以将这些与几天和几年结合起来。

其他示例:

MsgBox Format(Date, "dd-mmm-yyyy")

^将于2019年10月23日返回

MsgBox Format(Date, "dddd-mmmm-dd-yyyy")

^将会返回:2019年10月23日星期三

这是在创建自定义格式,因此您可以根据需要重新排列dd,mm和yyyy区域,例如:

MsgBox Format(Date, "yyyy/mm/dd")

^将返回:2019/23/10

答案 3 :(得分:2)

找到了一种更简单的解决方案来获取当前的月份名称

只需使用MonthName(Month(Now))并将其分配给字符串。

Month(Now)为您提供月份数字,MonthName()使用该数字显示当前月份

答案 4 :(得分:0)

这是我发现的最好方法:

Sub getMonth()

'MsgBox DatePart("m", Date)
'MsgBox Evaluate("MONTH(""" & Date & """)")
'MsgBox VBA.DateTime.Month(Date)

MsgBox Format(Date, "mmmm")

End Sub

答案 5 :(得分:0)

以下是我根据当前月份名称找到上个月的方式,对monthNum的分配是解决您的问题所需的部分。

month = "February"
'****'
  monthNum = Application.Evaluate("=MONTH(1&" & Chr(34) & month & Chr(34) & ")") 'Returns month #
'****'
If monthNum = 1 Then
    monthNum = 12
Else
    monthNum = monthNum - 1
End If
month = MonthName(monthNum) 'Returns January