Excel VBA月份函数抛出类型不匹配

时间:2013-10-28 17:30:41

标签: vba excel-vba excel

以下是A栏中的数据:

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

这是我的代码:

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)为什么不匹配?在excel中直接使用它而不是VBA脚本时,Month函数在此设置中可以正常工作。

2)有没有更好的方法将文本解析为日期?日期字符串格式超出了excel考虑的日期,这就是我发布多个中频的原因。

2 个答案:

答案 0 :(得分:2)

VBA中的Month()函数获取日期并返回数字(整数)月份(例如,如果您在1/5/2013下午4:30传递它,则为1)。你得到的类型不匹配,因为你试图传递月份缩写,例如“SEP”,当它实际上正在查找具有日期类型而不是字符串的参数时,到Month()函数。

您可以使用CDate()功能将您的值转换为日期:

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

显示“9/23/2013 8:58:35 AM”

答案 1 :(得分:0)

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

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

k =“2013-SEP-04 10:51:42” l2 =月(DateValue(格式(k,“YYYY-MMMM-dd”)))

如果没有意味着再次使用excel中的格式与我联系。