vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2023
 
zurück
Rubrik:    |   VB-Versionen: VB6, VBA01.07.17
Ersatzfunktion für die VBA.IsNumeric Funktion

Die VB-Eigene IsNumeric Funktion wertet automatisch ein "E" im übergebenen Ausdruck als Exponenzialschreibweise aus, was u.U. zu Verwirrungen führen kann!

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  2.673 
http://www.tools4vb.de/System:  Win7, Win8, Win10 Beispielprojekt 

Die VB-Eigene IsNumeric Funktion wertet automatisch ein "E" im übergebenen Ausdruck als Exponenzialschreibweise aus, was u.U. zu Verwirrungen führen kann!

Will man bspw. einen Text (String) prüfen, ob dieser numerisch ist, verwendet man i.a.R. die IsNumeric Funktion von VB:

Dim MyText As String
MyText = "4B7"
If IsNumeric(MyText) Then
 ...

Obiges Beispiel ergibt den Wert False, d.h. der übergebene Ausdruck "4B7" wurde als "nicht numerisch" ausgewertet.

Noch ein Beispiel:

MyText = "4E7"
If IsNumeric(MyText) Then
 ...

Jetzt wird auf einmal der Wert True zurückgeliefert, d.h. der übergebene Ausdruck "4E7" wird als "numerisch" ausgewertet.
Hintergrund ist das enthaltene "E". Dieses Zeichen wird automatisch als Exponenzialschreibweise erkannt, was jedoch in vielen Fällen zu Verwirrungen sorgen kann!

Daher habe ich eine kleine Ersatz-Funktion erstellt, die im übergebenen Ausdruck das "E" als Buchstabe und nicht als "Zahl" auswertet, sofern es sich bei dem Ausdruck um einen String-Datentyp handelt:

' Ersatzfunktion für VBA.IsNumeric,
' da die IsNumeric von VB ein "E" als Exponenzialschreibweise auswertet, bspw. 4E7 = IsNumeric True ?!?!
Public Function IsNumeric(ByVal Value As Variant) As Boolean
  If Not IsNull(Value) Then
    If varType(Value) = vbString Then
      IsNumeric = VBA.IsNumeric(Replace(CStr(Value), "E", "A"))
    Else
      IsNumeric = VBA.IsNumeric(Value)
    End If
  End If
End Function

Ab sofort liefert folgende Abfrage den (gewünschten) Rückgabewert False:

MyText = "4E7"
If IsNumeric(MyText) Then
 ...

Dieser Tipp wurde bereits 2.673 mal aufgerufen.

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2023 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel