Val-Funktion

Aktualisiert: Juli 2008

Gibt die in einer Zeichenfolge enthaltenen Zahlen als numerischen Wert eines geeigneten Typs zurück.

Public Overloads Function Val(ByVal InputStr As String) As Double
' -or-
Public Overloads Function Val(ByVal Expression As Object) As Double
' -or-
Public Overloads Function Val(ByVal Expression As Char) As Integer

Parameter

  • Expression, InputStr
    Erforderlich. Ein beliebiger gültiger String-Ausdruck, eine Object-Variable oder Char-Wert. Wenn Expression den Typ Object hat, muss der Wert in String umgewandelt werden können. Andernfalls tritt ein ArgumentException-Fehler auf.

Ausnahmen

Ausnahmetyp

Fehlernummer

Bedingung

OverflowException

6

InputStr ist zu lang.

ArgumentException

438

Object-Typausdruck kann nicht in String konvertiert werden.

Beachten Sie die Spalte "Fehlernummer", wenn Sie Visual Basic 6.0-Anwendungen aktualisieren, die eine unstrukturierte Fehlerbehandlung verwenden. (Sie können die Fehlernummer mit der Number-Eigenschaft (Err-Objekt) vergleichen.) Wenn möglich, sollten Sie jedoch erwägen, eine solche Fehlersteuerung durch eine Übersicht über die strukturierte Ausnahmebehandlung für Visual Basic zu ersetzen.

Hinweis:

Eine InvalidCastException-Ausnahme (Fehlernummer 13) kann als Reaktion auf bestimmte ungewöhnliche Zahlenformate ausgelöst werden. Weitere Informationen zu diesem Fehler finden Sie unter Typenkonflikt (Visual Basic). Die Ausnahme wird beispielsweise im folgenden Code ausgelöst.

' These examples cause run-time errors.

'Console.WriteLine(Val("1.34%"))

'Console.WriteLine(Val("1.34&"))

Der Konflikt zwischen der als Double formatierten Zahl und den Zeichen vom Integer-Typ und vom Long-Typ würde vom Compiler aufgefangen, wenn er nicht in einer Zeichenfolge verborgen wäre.

' These examples cause compiler errors.

'Dim m = 1.34%

'Dim n = 1.34&

Hinweise

Die Val-Funktion liest die Zeichen einer Zeichenfolge bis zum ersten Zeichen, das nicht als Teil einer Zahl interpretiert werden kann. Symbole und Zeichen, die oft als Teil eines numerischen Werts erkannt werden (z. B. Währungssymbole und Kommas), werden nicht erkannt. Die Funktion erkennt allerdings die Präfixe &O (für oktal) und &H (für hexadezimal) zur Angabe der Zahlenbasis. Leerzeichen, Tabulatoren und Zeilenvorschubzeichen werden aus dem Argument entfernt.

Der folgende Aufruf gibt den Wert 1615198 zurück.

Val(" 1615 198th Street N.E.") 

Der folgende Aufruf gibt den Dezimalwert -1 zurück.

Val("&HFFFF") 
Hinweis:

Die Val-Funktion erkennt nur den Punkt (.) als gültiges Dezimaltrennzeichen. Wenn Sie ein anderes Dezimaltrennzeichen benötigen (z. B. für internationale Anwendungen), verwenden Sie stattdessen die Funktion CDbl oder CInt, um eine Zeichenfolge in eine Zahl zu konvertieren. Um die Zeichenfolgendarstellung in eine Zahl in einer bestimmten Kultur umzuwandeln, verwenden Sie die Parse(String, IFormatProvider)-Methode des numerischen Datentyps. Verwenden Sie beispielsweise Double.Parse, wenn Sie eine Zeichenfolge in einen Double-Wert konvertieren.

Beispiel

Im folgenden Beispiel wird die Val-Funktion verwendet, um die Zahlen zurückzugeben, die in den einzelnen Zeichenfolgen enthalten sind. Val beendet die Konvertierung beim ersten Zeichen, das nicht als numerische Ziffer, numerischer Modifizierer, numerische Zeichensetzung oder Leerraum interpretiert werden kann.

Dim valResult As Double
' The following line of code sets valResult to 2457.
valResult = Val("2457")
' The following line of code sets valResult to 2457.
valResult = Val(" 2 45 7")
' The following line of code sets valResult to 24.
valResult = Val("24 and 57")

Anforderungen

Namespace:Microsoft.VisualBasic

**Modul:**Conversion

Assembly: Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)

Siehe auch

Referenz

Str-Funktion

Funktionen für die Typkonvertierung

OverflowException

InvalidCastException

ArgumentException

Änderungsprotokoll

Date

Versionsgeschichte

Grund

Juli 2008

Hinweis im Abschnitt "Ausnahmen" hingefügt, um das Auftreten von InvalidCastException-Ausnahmen zu erläutern.

Kundenfeedback.