我有一张Excel表格,其中E2 =“10-Apr-16”作为自定义格式。我想返回它的周数(可能是16)。我使用的代码(E2激活):
With ActiveCell
.NumberFormat = "mm/dd/yyyy"
.Value = Date
End With
oneDate = Format(Range("E2").Select, "mm/dd/yyyy")
weekNumber = DatePart("ww", oneDate)
oneDate原来是12/29/1899,而WeekNumber是52.我的代码有什么问题???
更新
我后来将代码更改为:
Range("E:E").NumberFormat = "m/dd/yyyy"
oneDate = Range("E2")
oneDate = Format(Range("E2").Select, "m/dd/yyyy")
weekNumber = DatePart("ww", oneDate)
有了这个,我将12/29/1899作为oneDate,将52作为weekNumber。
没有第三行(甚至没有第一行),代码将正常工作并返回16作为weekNumber;
使用第三行(无论是否有第一行),它仍然会在12/29/1899返回。
我认为问题在于第三行的代码,但不确定它是什么。有人知道我做错了吗?
答案 0 :(得分:1)
您的代码将系统日期插入ActiveCell(无论哪一个),然后将oneDate设置为E2
我完全不知道你希望实现的目标,但似乎你可以通过
来实现你所说的。weekNumber = datepart("ww", Range("E2"))
只要E2中的内容实际上是Excel识别为日期的日期序列号,而不仅仅是看起来像日期的文本(重要区别)
如果weekNumber仍然错误,请尝试
weekNumber = datepart("ww",date)
这将获得当前的周数,这意味着就Excel而言,E2并不是真正的日期
答案 1 :(得分:0)