我一直在玩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中直接执行此操作。
答案 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