【发布时间】:2016-11-29 18:13:10
【问题描述】:
我有以下代码在某些笔记本电脑上运行没有问题,然后在其他笔记本电脑上运行时会出现类型不匹配的错误。在 AA 列中是格式为 (mm/dd/yyyy) 的日期,而在 AB 列中具有格式为 (hh:mm:ss) 的相应时间。
我从 Now() 中减去日期和时间。我无法真正解决问题,因为它在我的笔记本电脑上运行良好。对于其他人,它会出错。 CLng(CDate(Now())) 有一个值,但其他两个会导致类型不匹配。我已经尝试了下面的两行以及连接日期和时间的另一行,然后执行 CLng(CDate(.
'If CLng(CDate(Now())) - CLng(CDate(Range("AA" & i).Value)) + CLng(CDate(Range("AB" & i).Value)) >= 7 Then
If CLng(CDate(Now())) - CLng(CDate(FMT(Range("AA" & i), "mm/dd/yyyy"))) + CLng(CDate(FMT(Range("AB" & i), "hh:mm:ss"))) >= 7 Then
其中 FMT 是一个公共函数:
Public Function FMT$(ByVal Value, ByVal strFormat)
FMT = VBA.Format$(Value, strFormat)
End Function
我要求我的同事将他所在地区日期/时间设置的屏幕截图发送给我。我想可能是这种情况。我已经阅读了与此类似的其他问题,但无法弄清楚。提前致谢。
【问题讨论】:
-
Date的时间部分是分数。在只包含时间的Date上使用CLng将从中午开始四舍五入。你到底想计算什么? -
AA 列中的日期格式为 (mm/dd/yyyy),AB 列中的时间格式为 (hh:mm:ss)。我想从 Now() 中减去日期和时间。感谢您提供有关 CLng 的信息。最初,我将日期和时间连接起来,然后使用 CLng,这对我来说非常有用。但对其他人来说,它不起作用,所以我认为我的连接方式可能有问题,所以我拆分了日期和时间。但事实并非如此。
-
AA 和 AB 列中是否有日期和时间,或者这些列中是否有看起来像日期和时间的字符串? (如果您将单元格格式暂时切换为
General并且单元格显示数字,则内容为日期/时间,但如果它们继续显示类似于日期和时间的内容,则内容只是字符串。)跨度> -
我对它进行了格式检查,它是文本格式。