Excel:运行时错误'13'类型不匹配

6
这行VBA代码出现“运行时错误'13'类型不匹配”的原因可能是什么?
.Cells(1, 1) = CDate(Format(Now, "dd.mm.yy hh:mm"))

问题在于,我的同事没有遇到这个错误。我们都在“德国”办公室工作。

它会一直工作到10:13,我预计你会看到错误的时间。 - Mike Miller
1
@Elmex,请查看您的控制面板并查看您的区域和语言设置,我认为您会发现您没有使用德语。 - Fionnuala
@Mike Miller:我也曾这样想,但我是在9:53进行测试的!我认为在较新版本的Office中,它们根据上下文处理了它(例如,今天上午9:53 msgbox format(now,"dd.mm.yy hh:mm") 返回"15.06.11 09:53"。 我确信这在VB6中无法实现,因此可能是最近VBA的微调。 - Jon Egerton
1
@Elmex:您意识到您正在将类型 Date (Now) 转换为类型 String,然后使用 Format 将其转换回 Date 类型,最终再使用 CDate 进行转换吗?您想进行这种看似无用的来回操作的特别原因是什么? - Jean-François Corbett
1
仅澄清一下:如果“mm”紧接在“hh”之后,VBA可以确定“mm”表示分钟。不过,“nn”更好的做法是因为它更明确无误。 - Jean-François Corbett
显示剩余4条评论
1个回答

8
我不确定您为什么需要这种格式,因为在填写单元格之前它会被直接转换回日期。您应该选择以下两种方式中的一种:
1. 如果您只是想将日期显示在单元格中,请使用 Excel 中的日期格式。 2. 如果您希望以编程方式处理日期,请使用 ISO 8601 格式(例如:YYYY-MM-DD)。
.Cells(1, 1) = Format(Now,"dd.mm.yy hh:mm")

甚至更好。
.Cells(1, 1) = Now

然后按照以下格式对该列进行格式化:
Columns("A:A").NumberFormat = "dd.mm.yy hh:mm"

注意:在格式字符串中使用mm可能没有帮助,但是刚刚尝试了一下,似乎可以正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接