VBA时间(现在)类型不匹配错误

时间:2016-05-16 08:07:55

标签: excel vba

我遇到以下代码的问题,每次打开文件时都会返回类型不匹配错误消息。问题是该文件在某些​​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

2 个答案:

答案 0 :(得分:1)

Hour(Now())应该这样做。小时分钟和秒,日月和年。类型不匹配试图将不同的类型放入不正确的变量类型或尝试对两种类型进行比较,因此如果按F1,您可以看到时间返回一个时间,并且您将与整数进行比较。

答案 1 :(得分:0)

有趣的是,这可以在某些PC上运行,因为Nathan_Sav显示用Time(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 =如果当天等于或大于6,直到当月的最高点(即28到31),则运行

Month(now()) >= 6 =如果月份等于或大于6月(第6个月)到12月,则运行

年份不适合此特定列表。