Access 2010-VBA Select Case-Anweisung
Ich versuche zu bauen, eine Funktion, wo basierend auf einem string-Vergleich die Verwendung einer bestimmten Formel
Das problem, das ich habe, ist, dass ich eine Byref argument type mismatch Fehler
Muss es etwas damit zu tun, übergeben Sie die Zeichenfolge für den Vergleich und auch die zahlen für die Formeln. Könnte jemand bitte einen Blick darauf werfen und helfen?
Public Function MyRateCalc(rateType As String, fixedAmount As Long, minAmount As Long, rateDollar As Long, valPerc As Long, rtValue As Long) As Double
Select Case rateType
Case "A1"
MyRateCalc = fixedAmount * valPerc
Case "A"
MyRateCalc = rtValue * rateDollar * valPerc
Case "B", "C", "D", "H", "L", "N", "R"
MyRateCalc = IIf(rtValue * rateDollar > minAmount, rtValue * rateDollar * valPerc, minAmount * valPerc)
Case "M", "U", "MS"
MyRateCalc = rtValue * rateDollar * valPerc
Case Else
MyRateCalc = 0
End Select
End Function
Kann man den code, den Sie verwenden für den Aufruf der Funktion? Sie sind wahrscheinlich über Argumente des Typs
single
oder double
wenn Sie sind definiert als long
InformationsquelleAutor Craigoh1 | 2013-08-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Funktion selbst ist in Ordnung.
Aber das problem wird sein, wie Sie sind aufrufen die Funktion.
In VBA, Funktion, Argumente per Referenz übergeben (
ByRef
) standardmäßig. Dies bedeutet, dass die Datentypen in der Anrufer werden genau die gleichen wie die in der Funktion.Zwei Möglichkeiten:
1) Passen Sie Ihre Funktion
2) Überprüfen Sie die Anrufer-Variablen-Typen sorgfältig; Sie müssen genau übereinstimmen.
Ich bevorzuge Ansatz (1), wie es erhöht Stabilitäts-Programm (Funktionen sind nicht unbeabsichtigt ändern der Variablen im aufrufenden code); auch wenn es auf Kosten der einen string kopieren, in Ihrem Fall.
InformationsquelleAutor Bathsheba