2017-07-20 3 views
0

Ich habe einen Code unter dem, den ich für Excel erstellt habe. Ich versuche es jetzt auf Access anzuwenden. Es gibt Änderungen, die an dem Code vorgenommen wurden, der es für Access kompatibel gemacht haben sollte, aber es gibt mir immer noch einen Fehler. Verstehe ich nicht, was dieser Fehler ist und was dagegen zu tun:VBA Excel-Code zum Zugriff

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 

Dies ist der Fehler das ist zeigt:

enter image description here

+2

'Term' ist ein String - es hat keine' Value' Eigenschaft. Sollte nur 'Select Case term' sein. –

+0

Ich kann das Bild nicht sehen, aber ich vermute, es gibt ein Problem mit diesem Teil' val1 = fakturedatum + 120', weil Sie eine datendefinierte Variable zu einer Ganzzahl hinzufügen, die nicht funktioniert. Wenn Sie versuchen, 120 einer Einheit zu einem Datum hinzuzufügen, verwenden Sie die Funktion "DateAdd" wie in der folgenden Zeile. – braX

+0

Sie müssen '.Value' aus' term.Value', 'days.Value' und' francicedate.Value' nehmen. Dies sind jetzt Werttypen, keine Bereiche. –

Antwort

0

Eine alternative Version Ihrer NewMaturity Funktion:

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