0

Here is my data in the A column:

2013-SEP-04 10:51:42
2013-OCT-23 08:58:35
2013-OCT-23 08:58:35
2013-SEP-23 08:58:35
2013-OCT-23 08:58:35
2013-OCT-23 08:58:35
2013-SEP-23 08:58:35

Here is my code:

Sub getMonthNumber()
'
' getMonthNumber()
'

'

    Dim rowsMonth As Long
    Dim todaysMonth As Integer
    Dim todaysMonthDate As Date
    Dim column As Range, cell As Range

    Set column = Range("A1:A" & ActiveSheet.UsedRange.Rows.Count)
    inactiveStaffConnected = 0
    todaysMonth = Month(Date) - 1
    rowsMonth = 0

    For Each cell In column
        rowsMonth = Month(Mid(cell.Value, 10, 2) & Mid(cell.Value, 6, 3) & Mid(cell.Value, 1, 4))

    Next


End Sub

1) Why the mismatch? The Month function works fine in this setup when using it straight in excel rather than a VBA script.

2) Is there a better way to parse the text into a date? The date string is too out of format with what excel considers a date which is why i'm issuing multiple mids.

4

2 回答 2

2

VBA 中的Month()函数需要一个日期并只返回数字(整数)月份(例如,如果您在 2013 年 1 月 5 日下午 4:30 传递它,则为 1)。您会遇到类型不匹配,因为您试图将月份缩写(例如“SEP”)传递给 Month() 函数,而它实际上是在寻找具有日期类型而不是字符串的参数。

CDate()您可以使用以下函数将值转换为日期:

MsgBox CDate("2013-SEP-23 08:58:35")

显示“2013 年 9 月 23 日上午 8:58:35”

于 2013-10-28T17:35:29.657 回答
0

A列的单元格格式是什么。

如果它是一般格式,则意味着这将起作用

k = "2013-SEP-04 10:51:42" l2 = 月(DateValue(Format(k, "YYYY-MMMM-dd")))

如果不是,请使用您在 excel 中的格式再次与我联系。

于 2013-10-28T17:44:25.970 回答