Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Rechnen mit Textboxen in Userform

Rechnen mit Textboxen in Userform
18.05.2018 07:26:08
David
Hallo zusammen,
habe einen kuriosen Fehler in einer Programmierung, der seltsamerweise auch nicht immer auftritt.
Ich nutze eine Userform, und innerhalb dieser Userform zwei Textboxen für Eingaben und eine Textbox, um das Ergebnis auszugeben.
Bei Textbox.Change verändert sich das Ergebnis entsprechend.
Sporadisch (jedes 50. Mal oder so) erscheint in der "Ergebnis"-Textbox ein vollkommen abstruser, riesiger Wert, also etwa 10080, obwohl in den beiden anderen "4,2" und "2,4" steht und daher nur 10,08 rauskommen dürfte.
Was mache ich falsch?
Hier der Code:

Private Sub TextBox3_Change()
If TextBox3.Value  "" Then
If IsNumeric(TextBox3.Value) = False Then
TextBox3 = ""
MsgBox ("Bitte hier nur Zahlen eingeben." & vbNewLine & "Evtl. ist die Feststelltaste  _
aktiviert.")
Else
TextBox1 = TextBox3.Value * TextBox2.Value
End If
End If
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rechnen mit Textboxen in Userform
18.05.2018 08:21:21
ChrisL
Hi David
In VBA ist der Punkt das Dezimaltrennzeichen. Versuche mal mit Replace(TB.Text, ",", ".").
cu
Chris
AW: Rechnen mit Textboxen in Userform
18.05.2018 17:29:33
David
Hi,
Danke für den Tipp. Versuche ich mal.
Allerdings habe ich ausprobiert, was passiert, wenn ich zum Beispiel statt "4,2" "4.2" eingebe. Dann macht er daraus 42. Soweit so gut.
Aber ich kann nicht rekonstruieren, wie aus einstelligen Multiplikatoren (mit ein bis zwei Nachkommastellen) vier- bis fünfstellige Ergebnisse werden können. Hat das auch mit dem Dezimaltrenner zu tun?
Lg.
David
Anzeige
AW: Rechnen mit Textboxen in Userform
18.05.2018 17:44:23
ChrisL
Hi David
Wenn die Kommastellen ignoriert werden, ergibt 42*24 = 1008. OK fehlt eine Null, keine Ahnung (muss an den Fliesskomma liegen ;)
Allerdings bin ich selber immer etwas unsicher, was die Lösung betrifft, da ich es aufgrund anderer Ländereinstellung (bei mir ist Punkt auch sonst das Dezimaltrennzeichen) nicht testen kann. Zum Glück tritt das Problem sehr häufig auf, weshalb du im Archiv/Netz garantiert einen passenden Beitrag zum Thema findest. ;)
cu
Chris
Anzeige
AW: Bei Textbox2= robert ?
18.05.2018 22:13:33
Gerd
Hallo, ein Ansatz!
Private Sub TextBox3_AfterUpdate()
If IsNumeric(TextBox2) And IsNumeric(TextBox3) Then
TextBox1 = CDbl(TextBox2) * CDbl(TextBox3)
Else
MsgBox "Bitte Zahlen eingeben!"
End If
End Sub

Gruß Gerd
Anzeige
Ja,klar- da Text... ;-) aber...
19.05.2018 07:22:53
robert
der TE hat ja geschrieben, dass er 2 mal Zahlen eingibt und es wird nicht richtig
gerechnet. Ich will-und meistens kann ich auch nicht-eine bessere,sichere Lösung
anbieten,ich will den bestehenden ! Code zum laufen bringen.
Die Frage ist ja, warum es beim TE nicht funktioniert, denn ich gehe davon aus,
dass wirklich Zahlen eingetragen werden.
Gruß
robert
Anzeige
AW: Rechnen mit Textboxen in Userform
19.05.2018 12:48:26
Gerd
Hallo
klemme störende Eingaben ab oder konvertiere vor der Mulitplikation selbst.
Private Sub TextBox3_AfterUpdate()
If IsNumeric(TextBox2) And IsNumeric(TextBox3) Then
TextBox1 = CDbl(Replace(TextBox2, ".", ",")) * CDbl(Replace(TextBox3, ".", ","))
Else
MsgBox "Bitte Zahlen eingeben!"
End If
End Sub
Gruß Gerd
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Rechnen mit Textboxen in Userform


Schritt-für-Schritt-Anleitung

Um in einer Userform mit Textboxen zu rechnen, folge diesen Schritten:

  1. Erstelle eine Userform in Excel mit mindestens drei Textboxen:

    • TextBox1 (für das Ergebnis)
    • TextBox2 (für die erste Eingabe)
    • TextBox3 (für die zweite Eingabe)
  2. Füge den folgenden VBA-Code hinzu, um die Berechnung durchzuführen. Dieser Code wird in das Ereignis TextBox3.Change eingefügt:

    Private Sub TextBox3_Change()
       If TextBox3.Value <> "" Then
           If IsNumeric(TextBox3.Value) = False Then
               TextBox3 = ""
               MsgBox ("Bitte hier nur Zahlen eingeben." & vbNewLine & "Evtl. ist die Feststelltaste aktiviert.")
           Else
               TextBox1 = CDbl(TextBox2.Value) * CDbl(TextBox3.Value)
           End If
       End If
    End Sub
  3. Teste die Userform mit verschiedenen Zahlen und achte darauf, ob die richtigen Werte ausgegeben werden.


Häufige Fehler und Lösungen

  • Problem: Bei der Eingabe von Zahlen mit Kommas anstelle von Punkten erhältst du unerwartete Ergebnisse.

    • Lösung: Verwende Replace, um die Eingaben zu konvertieren:
    TextBox1 = CDbl(Replace(TextBox2.Value, ",", ".")) * CDbl(Replace(TextBox3.Value, ",", "."))
  • Problem: Unerwartete große Werte erscheinen in der Ergebnis-Textbox.

    • Lösung: Stelle sicher, dass die Textboxen nur numerische Werte akzeptieren. Setze IsNumeric ein, um ungültige Eingaben abzufangen.

Alternative Methoden

Falls du eine andere Methode bevorzugst, kannst du die Berechnung ebenfalls im AfterUpdate-Ereignis der Textboxen durchführen:

Private Sub TextBox3_AfterUpdate()
    If IsNumeric(TextBox2.Value) And IsNumeric(TextBox3.Value) Then
        TextBox1 = CDbl(Replace(TextBox2.Value, ".", ",")) * CDbl(Replace(TextBox3.Value, ".", ","))
    Else
        MsgBox "Bitte Zahlen eingeben!"
    End If
End Sub

Diese Methode überprüft die Eingaben und führt die Berechnung nur aus, wenn beide Werte gültig sind.


Praktische Beispiele

Hier sind einige Beispiele, wie die Berechnung in der Userform funktioniert:

  1. Eingabe: 4,2 (in TextBox2) und 2,4 (in TextBox3)
    Ergebnis: 10,08 (in TextBox1)

  2. Eingabe: 10 (in TextBox2) und 5 (in TextBox3)
    Ergebnis: 50 (in TextBox1)

Denke daran, die Eingaben immer auf das richtige Format zu überprüfen.


Tipps für Profis

  • Fehlerbehandlung: Implementiere eine umfassende Fehlerbehandlung, um sicherzustellen, dass der Benutzer die Eingaben korrekt macht.

  • Visuelle Hinweise: Nutze Labels oder Farbausgaben, um den Benutzern zu zeigen, wenn ihre Eingaben ungültig sind.

  • Testen: Teste die Userform in verschiedenen Excel-Versionen, um sicherzustellen, dass die Funktionalität überall gleich ist.


FAQ: Häufige Fragen

1. Warum bekomme ich große Werte, wenn ich nur kleine Zahlen eingebe?
Das kann an den verschiedenen Dezimaltrennzeichen liegen. Stelle sicher, dass du Replace verwendest, um die Eingaben korrekt zu konvertieren.

2. Wie kann ich sicherstellen, dass nur Zahlen eingegeben werden?
Nutze die IsNumeric-Funktion, um die Eingaben zu validieren, bevor du Berechnungen durchführst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige