以下是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考虑的日期,这就是我发布多个中频的原因。
答案 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中的格式与我联系。