VBA时间(现在)键入不匹配错误

我遇到以下代码的问题,每次打开文件时都会返回types不匹配的错误消息。 问题是这个文件在一些PC上正常工作,而在我的笔记本电脑上,它触发了这个错误。

Private Sub Workbook_Open() Sheets("Report").Unprotect ' If Date <> Sheets("Report").Range("A1") Then If Time(Now) >= 6 Then Sheets("Report").Range("A1").Value = Date Sheets("Report").Range("C3").Value = 0 End If End If Sheets("Report").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowSorting:=True, AllowFiltering:=True End Sub 

Hour(Now())应该这样做。 小时和第二,日月和年。 types不匹配试图把不同的types放入不正确的variablestypes中,或者尝试对两种types进行比较,所以如果你按下F1,你可以看到时间返回一个时间,并且你正在比较一个整数。

有趣的是,这在一些个人电脑上工作,因为Nathan_Sav显示replaceTime(now)Hour(now())将摆脱错误,但我不知道这将是您需要的修复。

 If Hour(now()) >= 6 Then Sheets("Report").Range("A1").Value = Date Sheets("Report").Range("C3").Value = 0 End If 

如果时间等于或大于06:00至23:59,上面将运行代码。

这是目标是什么?

再次,正如Nathan_Sav所示,其他选项可能是: –

Second(now()) >= 6 =如果分钟等于或大于6秒直到第59秒,则运行

Minute(now()) >= 6 =如果小时等于或大于6分钟直到第59分钟,则运行

Hour(now()) >= 6 =如果时间等于或大于06:00至23:59,则运行

Day(now()) >= 6 =如果date等于或大于6直到当前月份的顶部(即28到31)

Month(now()) >= 6 =月份等于或大于六月(第六个月)至十二月

年份不适合在这个特定的列表。