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: Dieser Tipp wurde bereits 18.742 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv (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. |
vb@rchiv CD Vol.6 ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Heinz Prelle Datei-Mehrfachauswahl an eine ListBox übergeben Dieser Tipp zeigt, wie Sie über den Windows-CommonDialog eine Mehrfach-Dateiauswal realisieren... sevWizard für VB5/6 ![]() Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) |
||||||||||||||||
|
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. |
|||||||||||||||||


Ersatz-Val-Funktion für die fehleranfällige VBA.Val-Funktion


