Ms access VBA Excel代码访问

Ms access VBA Excel代码访问,ms-access,vba,Ms Access,Vba,下面是我为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

下面是我为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
这是显示的错误:


您的
NewMaturity
功能的替代版本:

Public Function NewMaturity(ByVal invoicedate As Date) As Date
    Dim d As Date
        d = DateAdd("m", 1, DateAdd("y", 120, invoicedate))

    NewMaturity = DateSerial(Year(d), Month(d), 1)
End Function

术语
是一个字符串-它没有
属性。应该是
Select Case term
我看不到图像,但我猜这部分有问题,因为您将日期定义的变量添加到一个不起作用的整数中。如果您试图将某个单位的120个单位添加到一个日期,请使用
DateAdd
功能,就像您在下一行中所做的那样。您需要从
期限.Value
天.Value
发票日期.Value
中提取
.Value
。现在这些是值类型,而不是范围。