Val("12.34") liefert Fehler "Typenkonflikt"

  • VBScript

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von JochenB.

    Val("12.34") liefert Fehler "Typenkonflikt"

    Hallo Forum,

    ich stehe auf dem Schlauch. Ich möchte in einer vb-Script-Datei einen String in eine Dezimalzahl verwandeln. Das Dezimalzeichen ist immer ein Punkt, egal in welcher Ländereinstellung ("12.34").

    In der Microsoft-Dokumentation fand ich die Funktion Val(string). Bei CDbl(String) soll ja das Dezimalzeichen regionsspezifisch funktionieren.

    Eine Einfache Scriptdatei mit folgendem Inhalt

    Quellcode

    1. s=Val("12.34")
    2. msgbox s


    liefert folgenden Laufzeitfehler:

    Typenkonflikt: 'Val'
    Code 800A000D

    Kann es sein, dass es die Funktion Val nur im VBA gibt oder mache ich etwas falsch?

    Was kann ich stattdessen in einem Script verwenden, so dass immer der Punkt als Dezimaltrennzeichen verwendet wird?

    Vielen Dank schonmal und viele Grüße
    Jochen

    Einlesen/Auslesen von Doubles im englischen Format: Lösung mit GetLokale() & SetLocale() gut?

    Ich glaube ich habe eine andere, hoffentlich bessere Lösung gefunden. Ich kann das System zeitweise auf Englisch-GB umschalten.

    Ist das eine gute Lösung oder stelle ich damit windows-weit die Region oder das regionale Format um und mache mir ggf. an anderer Stelle Probleme?

    Visual Basic-Quellcode

    1. Const cLocaleEnGB = 2057 ' oder "en-gb"
    2. 'Windows-Ländereinstellung merken und auf UK-Englisch umstellen:
    3. bLocale=GetLocale()
    4. SetLocale(cLocaleEnGB)
    5. 'Einlesen im englischen Format (Punkt als Dezimalzeichen):
    6. dValue = CDbl("12.34")
    7. 'Irgendwas mit der Variable machen:
    8. dValue = dValue + 10
    9. 'Ausgeben im englischen Format (Punkt als Dezimalzeichen) mit 2 Nachkommastellen:
    10. MsgBox "En-GB-Format: (" & cLocaleEnGB & "): " & FormatNumber(dValue, 2)
    11. 'Zurücksetzen auf das ursprüngliche Format:
    12. SetLocale(bLocale)
    13. 'Ausgeben im ursprünglichen Format (bei Deutsch: Komma als Dezimalzeichen) mit 2 Nachkommastellen:
    14. MsgBox "Standardformat (" & bLocale & "): " & FormatNumber(dValue, 2)


    Viele Grüße,
    Jochen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „JochenB“ ()