【发布时间】:2017-07-20 18:49:09
【问题描述】:
下面有一个我为 Excel 创建的代码。我现在正在尝试将其应用于 Access。对代码进行了一些更改,应该使其与 Access 兼容,但它仍然给我一个错误。我不明白这个错误是什么以及如何处理它:
Option Compare Database
Public Function OldMaturity(term As String, invoicedate As Date, days As Long) As Date
Dim d As Date
Select Case term.Value
Case "STD":
OldMaturity = DateAdd("y", days.Value, invoicedate.Value)
Case "BONM":
d = DateAdd("y", days.Value, invoicedate.Value)
OldMaturity = DateAdd("m", 1, DateSerial(Year(d), Month(d), 1))
Case "EOM":
d = DateAdd("y", days.Value, invoicedate.Value)
OldMaturity = DateAdd("y", -1, DateAdd("m", 1, DateSerial(Year(d), Month(d), 1)))
Case Else:
OldMaturity = CDate("99/99/9999")
End Select
End Function
Public Function NewMaturity(invoicedate As Date) As Date
Dim val1 As Long
Dim val2 As Long
val1 = invoicedate + 120
val2 = DateAdd("m", 1, val1)
NewMaturity = DateSerial(Year(val2), Month(val2), 1)
End Function
这是显示的错误:
【问题讨论】:
-
term是一个字符串 - 它没有Value属性。应该只是Select Case term -
我看不到图像,但我猜这部分
val1 = invoicedate + 120存在问题,因为您将日期定义的变量添加到不起作用的整数中。如果您尝试将 120 个单位添加到日期,请使用DateAdd函数,就像您在下一行中所做的那样。 -
您需要从
term.Value、days.Value和invoicedate.Value中取出.Value。这些现在是值类型,而不是范围。