Month()函数不返回正确的值

时间:2018-01-11 14:13:26

标签: vba excel-vba excel

我想确定startDate的月份,但在VBA month()函数的帮助下,我总是得到一个完整的日期(此处: 07.01.1900 ) 。我有什么想法可以轻松确定startMonth?在此先感谢您的帮助!

这是我的代码:

Sub Calc()

Dim length As Long
Dim startDate As Date
Dim endDate As Date
Dim startMonth As Integer

startDate = Range("C2").Value      '22.07.2016
endDate = Range("P2").Value        '26.10.2016
length= endDate - startDate
startMonth = Month(startDate) 

Range("E5").Value = length        'returns 96
Range("E6").Value = startMonth    'returns 07.01.1900 instead of 7


End Sub

4 个答案:

答案 0 :(得分:1)

试试这个

With Range("E6")
    .Value = startMonth
    .NumberFormat = "#"
End With

或.NumberFormat =" 0#"如果你想看到领先的0.

答案 1 :(得分:0)

您给我们的代码似乎并没有像您提到的那样使用Month()函数。你试过吗

startMonth = Month(Range("U2").Value)

答案 2 :(得分:0)

您的单元格E6的格式为Date。将其格式化为标准单元格,它将为您提供预期的结果。

话虽如此,有一种更好的方法来区分两个日期之间的时期(月,日或年):

Public Sub TestMe()
    Debug.Print DateDiff("m", "22.07.2016", "26.10.2016") 'difference in months
    Debug.Print DateDiff("d", "22.07.2016", "26.10.2016") 'difference in days
    Debug.Print DateDiff("y", "22.07.2016", "26.10.2016") 'difference in years
End Sub

DateDiff MSDN

答案 3 :(得分:0)

这可能是格式化问题。运行:

Sub Calc()

    Dim length As Long
    Dim startDate As Date
    Dim endDate As Date
    Dim startMonth As Integer

    startDate = Range("C2").Value
    endDate = Range("P2").Value
    length = endDate - startDate
    startMonth = Month(startDate)

    Range("E5").Value = length
    Range("E6").Value = startMonth
End Sub

的产率:

enter image description here