Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何获取当前月份?_Excel_Vba - Fatal编程技术网

Excel 如何获取当前月份?

Excel 如何获取当前月份?,excel,vba,Excel,Vba,我无法获取当前月份的数据 获取当前年份和日期似乎非常简单,如下所示: 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中执行此操作 Month(Now)

我无法获取当前月份的数据

获取当前年份和日期似乎非常简单,如下所示:

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中执行此操作

 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
试试看


找到了一个更容易获取当前月份名称的解决方案

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


Month(Now)
为您提供了月份编号,而
MonthName()
使用该编号显示当前月份

以下是我找到的最好的方法:

Sub getMonth()

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

MsgBox Format(Date, "mmmm")

End Sub

一种非常有用且简单的方法是将format函数与date组合在一起

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

要将当前月份作为原始问题中的数字获取,请执行以下操作:

MsgBox Format(Date, "mm")
^返回时间:10点

要以短文本形式获取当前月份,请执行以下操作:

MsgBox Format(Date, "mmm")
^将于10月1日返回

要获取当前月份的全文,请执行以下操作:

MsgBox Format(Date, "mmmm")
^将于10月返回

你也可以将这些与天数和年份结合起来

其他示例:

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

以下是我如何根据当前月份名称找到上个月的,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

Month(现在)
不起作用?它应该返回3No,因为某些原因它不会返回,因此我感到困惑。@TimWilkinson您可能会使用一些保留字,如“date”作为字段名或变量。首先解决您的编译问题。您已经在某处声明了一个名为Month的变量/例程。在周四得到了Friday vibe,我将Month声明为脚本后面的字符串。现在一切正常。
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