vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Verschiedenes / Sonstiges   |   VB-Versionen: VB622.08.05
Ersatz-Val-Funktion für die fehleranfällige VBA.Val-Funktion

Die Val-Funktion von VB(A) arbeitet leider manchmal etwas eigenartig und liefert u.U. falsche Wert-Rückgaben.

Autor:   Dieter OtterBewertung:  Views:  18.142 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Haben Sie nicht auch schon einmal das Problem gehabt, dass die Val-Funktion von VB den Fehler "Type Mismatch" oder zu deutsch "Typen unverträglich" meldet? Oder haben Sie sich schon einmal darüber gewundert, dass die Val-Funktion bei der Umwandlung eines Strings, der sowohl Tausender-Trennzeichen als auch ein Dezimal-Trennzeichen enthält, ein falsches Ergebnis zurückliefert?

Hier zwei einfache Beispiele, bei denen die VB-eigene Val-Funktion nicht korrekt funktioniert:

MsgBox Val("1.234,56")  ' Fehler: VBA.Val liefert hier den Wert 1,234 statt korrekterweise 1234,56
MsgBox Val("6,1%") ' Fehler: VBA.Val liefert den Wert 6 statt 6,1

Nachfolgend nun unsere neue Val-Funktion, die das Mango der VBA.Val-Funktion ausbügelt:

Public Function Val(ByVal sValue As String) As Double
  Dim sChar As String
 
  ' Dezimaltrennzeichen durch ! ersetzen
  sValue = Replace(sValue, GetDecimalChar(), "!")
 
  ' Tausendertrennzeichen ausfiltern
  sChar = GetThousandGroupDigit()
  If Len(sChar) > 0 Then
    sValue = Replace(sValue, sChar, "")
  End If
 
  ' evtl. nachstehende "Nicht-Ziffern"-Zeichen entfernen
  While InStr("0123456789!", Right$(sValue, 1)) = 0 And Len(sValue) > 0
    sValue = Left$(sValue, Len(sValue) - 1)
  Wend
 
  ' ! durch . ersetzen, damit die VBA.Val-Funktion
  ' den korrekten Wert zurückliefert
  Val = VBA.Val(Replace(sValue, "!", "."))
End Function

Die neue Val-Funktion benötigt die beiden Funktionen zum Ermitteln des Dezimal-/Tausendertrennzeichens aus dem Tipp:
 Dezimal- und Tausender-Trennzeichen einfach ermitteln



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.