Log på med Microsoft
Log på, eller opret en konto.
Hej
Markér en anden konto.
Du har flere konti
Vælg den konto, du vil logge på med.

TechKendt indhold

Spørgsmål: Der er skrevet VBA-kode, der sammenligner to valutaværdier. Nedenfor vises et eksempel på denne kode:

If ccur(cost) > ccur(1000) then

Når denne linje med kode udføres, medfører det, at datatypen ikke kankompatibilitet, eller at typen af uoverensstemmelsestype udføres. Indstillingerne Windows Valuta er aktuelt defineret som engelske "pund"-symboler for valutasymbolet. Hvis jeg ændrer valutasymbolet til "$", kører koden korrekt. Hvad sker der her, og er der nogen måde at løse dette problem på?


Svar: I VBA respekterer funktionen Ccur() altid valutaindstillingerne i Kontrolpanel, når dette felt evalueres. Da Dynamics VBA-implementeret altid passerer dens feltværdier som strenge, har du dette problem, hver gang en valutaværdi evalueres, der ikke stemmer overens med valutaindstillingerne i Windows.


I VBA Hjælp-filen angiver den, at funktionerne til datatypekonvertering skal bruges i stedet for Val til at levere omregninger, der tager globalt ar på forskellige steder, fra én datatype til en anden. Når du f.eks bruger CCur()-funktionen, genkendes forskellige decimalseparatorer, forskellige tusindtalsseparatorer og forskellige valutaindstillinger korrekt afhængigt af computerens indstilling for landekode.


Under denne forståelse skal du bemærke dette om at arbejde med Microsoft Dynamics GP:

  • CCur("œ1000") vil være lig med en typeuoverensstemmelse (dvs. denne streng er ikke en gyldig valuta), hvis indstillingen Windows valuta ikke er angivet til "pund".

  • Hvis værdien er angivet til "pund", returnerer CCur("œ1000") en værdi på 1000, men derefter vil CCur("$1000") være lig med en typeuoverensstemmelsesfejl.

Den bedste måde at håndtere valutaer fra VBA på ville være at skrive en funktion, der konverterer en streng med ikke-numeriske symboler foran en numerisk (eller valuta) værdi. F.eks. som dette:

If CurrencyValueFromDynField(cost) > ccur(1000) then

hvor funktionen med navnet ValutaværdiFromDynField er defineret som følger. Denne kode håndterer korrekt negative tal, der har fortsættende eller efterstillede minustegn, der er omgivet af kantede parenteser, eller som har mellemrum mellem valutasymbolet og tallet.

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

Denne artikel var TechKendt dokument-id:10036

Har du brug for mere hjælp?

Vil du have flere indstillinger?

Udforsk abonnementsfordele, gennemse kurser, få mere at vide om, hvordan du sikrer din enhed og meget mere.

Communities hjælper dig med at stille og besvare spørgsmål, give feedback og høre fra eksperter med omfattende viden.

Var disse oplysninger nyttige?

Hvor tilfreds er du med kvaliteten af sproget?
Hvad påvirkede din oplevelse?
Når du trykker på Send, bliver din feedback brugt til at forbedre Microsoft-produkter og -tjenester. Din it-administrator kan indsamle disse data. Erklæring om beskyttelse af personlige oplysninger.

Tak for din feedback!

×