Bei Microsoft anmelden
Melden Sie sich an, oder erstellen Sie ein Konto.
Hallo,
Wählen Sie ein anderes Konto aus.
Sie haben mehrere Konten.
Wählen Sie das Konto aus, mit dem Sie sich anmelden möchten.

Bekannte Inhalte von TechKnow

Frage: VBA-Code wurde geschrieben, der zwei Währungswerte vergleicht. Unten sehen Sie ein Beispiel für diesen Code:

If ccur(cost) > ccur(1000) then

Wenn diese Codezeile ausgeführt wird, führt dies zu einer Fehlermeldung über Inkompatibilität oder Typkonflikt. Die Windows Währungseinstellungen sind derzeit als englisches "Pfund"-Symbol für das Währungssymbol definiert. Wenn ich das Währungssymbol in "$" tausche, wird der Code erfolgreich ausgeführt. Was passiert hier, und gibt es eine Möglichkeit, dieses Problem zu lösen?


Antwort: In VBA respektiert die Ccur()-Funktion bei der Auswertung dieses Felds immer die Währungseinstellungen der Systemsteuerung. Da die Dynamics VBA-Implementierung die Feldwerte immer als Zeichenfolgen überfing, liegt dieses Problem immer vor, wenn ein Währungswert ausgewertet wird, der nicht den Währungseinstellungen in diesem Windows.


In der VBA-Hilfedatei gibt sie an, dass die Datentypkonvertierungsfunktionen anstelle von Val verwendet werden sollten, um international bewusste Konvertierungen von einem Datentyp in einen anderen zu ermöglichen. Wenn Sie z. B. die CCur()-Funktion verwenden, werden unterschiedliche Dezimaltrennzeichen, Tausendertrennzeichen und Währungsoptionen je nach Ländereinstellung Ihres Computers richtig erkannt.


Beachten Sie im Rahmen dieses Verständnisses die Verwendung von Microsoft Dynamics GP:

  • CCur("œ1000") entspricht einem Typkonflikt (d. h. diese Zeichenfolge ist keine gültige Währung), wenn die Einstellung "Windows-Währung" nicht auf "Pfund" festgelegt ist.

  • Wenn sie auf "Pfund" festgelegt ist, gibt CCur("œ1000") den Wert "1000" zurück, aber dann entspricht "CCur("1000 $") einem Fehler vom Typ falsch.

Am besten können Sie mit Währungen aus VBA umgehen, wenn Sie eine Funktion schreiben, die jede Zeichenfolge mit nicht numerischen Symbolen davor in einen numerischen (oder Währungswert) umtauscht. Beispiel:

If CurrencyValueFromDynField(cost) > ccur(1000) then

Dabei ist die Funktion "CurrencyValueFromDynField" wie folgt definiert. Mit diesem Code werden negative Zahlen richtig verarbeitet, die sich fort- oder nachgestellte Minuszeichen befinden, die in Klammern gesetzt sind oder zwischen dem Währungssymbol und der Zahl Leerzeichen enthalten.

Public Function CurrencyValueFromDynField(FieldString As String) As Currency
Dim i As Integer
Dim TempChar, TempString As String

' Strip off all non-numeric characters
TempString = ""
For i = 1 To Len(FieldString)
TempChar = Mid(FieldString, i, 1)
If InStr("1234567890.,-()", TempChar) > 0 Then
TempString = TempString & TempChar
End If
Next
FieldString = TempString

' Return the numeric value of the string (as a currency data type )
CurrencyValueFromDynField = CCur(FieldString)
End Function

Dieser Artikel wurde unter "TechKnownow um Dokument-ID:10036" beschrieben.

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.

In den Communities können Sie Fragen stellen und beantworten, Feedback geben und von Experten mit umfassendem Wissen hören.

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Sprachqualität?
Was hat Ihre Erfahrung beeinflusst?
Wenn Sie auf "Absenden" klicken, wird Ihr Feedback zur Verbesserung von Produkten und Diensten von Microsoft verwendet. Ihr IT-Administrator kann diese Daten sammeln. Datenschutzbestimmungen.

Vielen Dank für Ihr Feedback!

×