Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1320to1324
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Abs-Command, Error Type 13

Abs-Command, Error Type 13
18.07.2013 12:21:23
Ulrich
Hallo zusammen,
ich habe einen Code generiert, der einen absoluten Wert von kleiner 1000 als Eingabewert in eine Textbox zulassen soll. Leider kommt es dabei immer zu einer Fehlermeldung Type 13, wenn in die entsprechende Textbox ein Minus eingegeben wird.
Im Internet konnte ich leider keine Antwort auf meine Frage finden - ich würde mich daher freuen, wenn Ihr euch eventuell kurz mein Problem anschauen könnt. Vielen Dank schon einmal im Voraus.
Anbei der entsprechende Code:

Private Sub InZinsänderung_Change()
Dim a As Double
a = Abs(InZinsänderung.Value)
If a > 1000 Then
MsgBox "The absolut value should not exceed 1000"
End If
End Sub


Wenn ich die Funktion richtig verstehe, müsste sie mir den absoluten Wert wiedergeben und dieser Fehlermeldung dürfte nicht erscheinen?
Wisst Ihr vielleicht wie ich dieses Problem beheben kann, sodass der absolute Wert im If-Command verarbeitet wird und keine Fehlermeldung erscheint?
Viele Grüße
Uli

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abs-Command, Error Type 13
18.07.2013 12:28:10
Klaus
Hi Uli,
wenn du ein - in die Textbox eingibst, wird der Wert nicht negativ - er wird Text! Genauso könntest du "Hallo Welt" eingeben.
Als Idee hab ich nur einen "dirty Workaround":
Private Sub InZinsänderung_Change()
Dim a As Double
If VBA.Left(inZinsänderung.Value, 1) = "-" Then
a = Abs(--VBA.Mid(inZinsänderung.Value, 2, 99))
Else
a = Abs(inZinsänderung.Value)
End If
If a > 1000 Then
MsgBox "The absolut value should not exceed 1000"
End If
End Sub
Damit verhinderst du aber immer noch nicht, dass jemand einen Text statt einer Zahl eingibt.
Am Rande: Ich würd in der Namensgebung auf Umlaute Verzichten, nur zur Sicherheit.
Grüße,
Klaus M.vdT.

Anzeige
AW: Abs-Command, Error Type 13
18.07.2013 12:48:37
Ulrich
Danke Klaus für deine schnelle Antwort,
leider führt der Code jedoch zur Error 13 bei Eingabe des Minus in folgender Zeile:
a = Abs(--VBA.Mid(InZinsänderung.Value, 2, 99))
Eine kurze andere Frage:
Ich habe mir auch die folgende Darstellung überlegt, welche für Werte kleiner -1000 eine Messagebox generiert:
Private Sub InZinsänderung_Change()
With InZinsänderung
If .Value 

Es kann also ein Minus eingegeben werden, ohne das direkt eine Messagebox ausgelöst wird.
Die folgende Variaten, mit einer zweiten Bedingung funktioniert jedoch nicht:
  • 
    Private Sub InZinsänderung_Change()
    With InZinsänderung
    If .Value  1000 Then
    MsgBox "The absolut value should not exceed 1000": .Value = ""
    End If
    End With
    End Sub
    

  • Bei Eingabe des Minus wird wieder die Messagebox ausgelöst.
    Weißt du/Ihr vielleicht ob man das Problem überhaupt mit einem derart einfachen Code lösen kann bzw. warum der erweiterte Code der zweiten Version sofort die Messagebox bei dem Minus ausgibt?
    Viele Grüße und herzlichen Dank im Vorraus!
    Uli

    Anzeige
    AW: Abs-Command, Error Type 13
    18.07.2013 14:22:34
    fcs
    Hallo Uli,
    der Inhalt einer Textbox ist zunächst einmal Text auch wenn du eine Zahl eintippst.
    In deiner Variante mit 2 Prüfungen ist als Text "-2000" nicht kleiner sondern größer als "-1000". Deshalb funktioniert es nicht. Mener Meinung nach kommst du um eine Konvertierung in eine Zahl nicht herum, um die Prüfungen korrekt machen zu können.
    Warum läßt du die Eingabe eines Minuszeichens in die Textbox denn überhaupt zu, wenn du den Eingabewert dann doch in eine positive Zahl umwandelst?
    Gruß
    Franz
    Private Sub InZinsänderung_Change()
    Dim a As Double
    With InZinsänderung
    If Left(.Value, 1) = "-" And Len(.Value) = 1 Then Exit Sub
    If IsNumeric(.Value) Then
    a = Abs(CDbl(.Value))
    If a > 1000 Then
    MsgBox "The absolut value should not exceed 1000"
    End If
    Else
    MsgBox "The value must be numeric, positve and not exceed 1000"
    End If
    End With
    End Sub
    

    Anzeige
    AW: Abs-Command, Error Type 13
    18.07.2013 12:46:57
    fcs
    Hallo Uli,
    Alternative zu Vorschlag von Klaus.
    Private Sub InZinsänderung_Change()
    Dim a As Double
    If IsNumeric(InZinsänderung.Value) Then
    a = Abs(CDbl(InZinsänderung.Value))
    If a > 1000 Then
    MsgBox "The absolut value should not exceed 1000"
    End If
    Else
    MsgBox "The value must be numeric and not exceed 1000"
    End If
    End Sub
    

    Du könntest dann natürlich ggf. das Ergbenis von CDbl(InZinsänderung.Value) auch auf kleiner 0 prüfen.
    Gruß
    Franz

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige