编译错误:Excel 中的预期函数或变量



我有一个函数,它应该花一个时间,例如,05:00:00 并用当前时间(以及可选的另一个时间(检查它,如果参数中的时间已经过去了,它应该返回相同的时间,但第二天。

例如,如果tm = 05:00:00和 now =2018-08-14 12:00:00,则函数应返回2018-08-15 05:00:00,但如果时间尚未过去,则 ex。tm = 19:00即现在

我的函数是(在一个单独的模块中(:

'Day Adjustment
Sub DayAdjust(tm As Double, Optional tm2 As Double = 0)
If tm2 = 0 Then
tm2 = DayAdjust(tm)
End If
If (Date + tm) < Now() Or (Date + tm) < tm2 Then
tm = (Date + 1 + tm)
End If
MsgBox tm
DayAdjust = tm
End Sub

调用该函数的代码为:

Dim schStart, schEnd As Double
schStart = Range("cdh_schStart").Value
schStartTime = DayAdjust(CDbl(schStart))
schEnd = Range("cdh_schEnd").Value
schEndTime = DayAdjust(schEnd, schStart)

单元格cdh_schStart包含值05:00:00,并且cdh_schEnd08:00:00当前系统时间设置为2018-08-14 18:30:00

在第 3 行,schStartTime = DayAdjust(CDbl(schStart)),我收到错误:

编译错误:

预期函数或变量

我需要一些帮助来弄清楚为什么会发生这种情况以及如何解决它。

您正在尝试使用schStartTime = DayAdjust(CDbl(schStart))进行赋值,因此您的 sub 需要编写为函数。事实上,你的子中有一个返回值赋值,但我想你错别字或没有意识到它必须声明为一个函数。

如果以零形式传递或未提供,则 @Rory tm2 无限循环的潜力所引发的好点,并且默认为零,因为该函数将在没有突破的情况下递归调用。您需要找到适当的方法来处理此问题。

Public Function DayAdjust(tm As Double, Optional tm2 As Double = 0) As Variant
If tm2 = 0 Then
tm2 = DayAdjust(tm)
End If
If (Date + tm) < Now() Or (Date + tm) < tm2 Then
tm = (Date + 1 + tm)
End If
MsgBox tm
DayAdjust = tm
End Function

最新更新