Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1612to1616
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
Aus Textbox wird keine Dezimalzahl übergeben
11.03.2018 14:18:42
Andreas
Hallo Excelprofis,
dank dieses Forums bin ich mit meinem Projekt schon ein Stückchen weiter.
Auf einem UserForm habe ich Combo- und Textboxen. In die Textboxen 1 bis 10 werden Zahlenwerte eingetragen, die dann per Commandbutton in die aktive Tabelle eingetragen werden.
Nun ist das Problem, wenn ich in den Textboxen 2 bis 10 einen Dezimalwert ( z.B. 0,75 ) eingebe, wird dieser Wert nicht als Zahlenwert in die Tabelle geschrieben.
Folgender Hintergrund:
In Textbox1 wird ein Buchungsbetrag eingetragen. In die Textboxen 2 bis 10 die Einzelbeträge. Zur Kontrolle ist in der Tabelle eine bedingte Formatierung angelegt.
Entspricht der Wert in Spalte E (Ttextbox1) der Summe der Werte G:O (Textboxen 2-10) färbt sich die Zelle. Bei Nichtübereinstimmung
ist die Zelle rot.
Gibt man also in Textfeld1 den Wert 1,75 und in Textfeld2 den Wert 1,75 ein, müsste sich der Zellhintergrund grau färben.
Leider funktioniert das nicht. Erst wenn man den Wert 1,75 in G händisch einträgt funktioniert es.
Der Wert in den Textboxen 2-10 wird bei Dezimalzahlen also nicht als Zahlenwert eingetragen.
https://www.herber.de/bbs/user/120330.xlsm
Kann mir bitte Jemand weiterhelfen?
Danke fürs lesen und die Hilfe.
mfg, Andreas

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aus Textbox wird keine Dezimalzahl übergeben
11.03.2018 14:23:11
Hajo_Zi
Hallo Andreas,
eine TextBox enthält das was der Name schon sagt Text. Man könnte vermuten Du hast Keine Umwandlungsfunktion (Cdbl()) benutzt und keine Prüfung ob numerisch.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: Aus Textbox wird keine Dezimalzahl übergeben
11.03.2018 14:29:38
Andreas
Hallo Hajo,
die Lösung für die numerische Eingabe habe ich gefunden und hoffentlich richtig in mein UserForm eingepflegt. Ganzzahlen und der Wert aus Textfeld1 werden auch richtig eingetragen, nur Dezimalzahlen der Textboxen 2-10 machen ärger.
mfg, Andreas
AW: Aus Textbox wird keine Dezimalzahl übergeben
11.03.2018 14:30:56
Hajo_Zi
dazu kann ich nichts schreiben. Da ich die geänderte Datei nicht sehe.
nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich möchte gerne den Fehler im Original sehen.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten anonymisieren bzw. pseudonymisieren.
Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)
Gruß Hajo
Anzeige
AW: Aus Textbox wird keine Dezimalzahl übergeben
11.03.2018 14:38:48
Andreas
Hallo Hajo,
ich habe doch eine Beispielmappe hochgeladen und im Beitrag verlinkt.
mfg, Andreas
AW: Aus Textbox wird keine Dezimalzahl übergeben
11.03.2018 14:41:46
Hajo_Zi
Hallo Andreas,
das habe ich dann wohl falsch gesehen. Ich hätte vermutet die Datei hast Du hochgeladen bevor mein Vorschlag kommt. Und es danach hast Du geschrieben das Du isnumeric eingearbeitet hast.
Da ich die Aufgabe falsch verstanden habe bin ich dann raus.
Gruß Hajo
AW: Aus Textbox wird keine Dezimalzahl übergeben
11.03.2018 15:07:13
Andreas
Hallo,
ich habe noch mal die Beispielmappe überarbeitet.
Leider besteht das Problem immer noch, trotz "IsNumeric"-Abfrage (von Hajo) ist keine Änderung eingetreten.
https://www.herber.de/bbs/user/120333.xlsm
mfg, Andreas
Anzeige
AW: Aus Textbox wird keine Dezimalzahl übergeben
11.03.2018 15:14:47
JoWE
Hallo Andreas,
für die TextBox 1 hast Du's ja richtig gemacht: Textbox1.Value * 1
Mach das doch einfach auch für die restlichen TextBoxen.
Allerdings fehlt dann immer noch die Prüfung ob tatsächlich auch nur Ziffern und jeweils nur ein Komma eingegeben wurden. Stichwort Fehlerbehandlung.
Gruß
Jochen
AW: Aus Textbox wird keine Dezimalzahl übergeben
11.03.2018 15:27:18
Andreas
Hallo Jochen,
danke für die Hilfe, dass klappt jetzt super. Was meinst du mit der Prüfung - ob tatsächlich auch nur Ziffern. Habe ich das nicht mit:
Private Sub TextBox1_Change()
If Not IsNumeric(TextBox1) Then
SendKeys "{BS}"
Beep
End If
End Sub
erledigt.
Sorry, ich versteh nicht wirklich viel von VBA. Habe mir die Codes aus dem Netz oder durch diese Forum zusammengesammelt.
Und wie müsste die Fehlerbehandlung aussehen?
mfg, Andreas
Anzeige
AW: Aus Textbox wird keine Dezimalzahl übergeben
11.03.2018 15:32:24
JoWE
Hallo Andreas,
besser ist es dies während der Eingabe in die TextBox zu limitieren.
Z.B. so:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57, 8, 44
Case Else
KeyAscii = 0
MsgBox "Es sind nur Ziffern und Komma zulässig!", vbInformation, "Hinweis"
End Select
End Sub
Gruß
Jochen
AW: Aus Textbox wird keine Dezimalzahl übergeben
11.03.2018 15:46:36
Andreas
Hallo Jochen,
vielen Dank für die Hilfe. Jetzt klappt es super.
Ein schönes Rest-WE.
mfg, Andreas
AW: Aus Textbox wird keine Dezimalzahl übergeben
11.03.2018 15:39:20
Daniel
Hi
Excel ist ein amerikanisches System, das ans Deutsche angepasst wurde.
Das gilt aber nicht für VBA, auch im deutschen Excel ist VBA weiterhin amerikanisch.
as gilt auch für die Übergabe von Werten von VBA nach Excel.
Dh wenn du einen Text in eine Zelle schreibst, erkennt Excel diesen Text als Zahl, wenn er nach deutschen Regeln wie eine Zahl aussieht (Komma als Dezimalzeichen)
Schreibt jedoch VBA einen Text in eine Zelle so muss dieser nach amerikanischen Regeln wie eine Zahl aussehen um als Zahl erkannt zu werden, dh mit Punkt als Dezimalzeichen.
dh, wenn du Kommazahlen in die Textbox eingibst und diese dann in die Zelle schreiben lässt, müsstest du sie erst vom deutschen ins amerikanische Format bringen und den Punkt als Dezimalzeichen einsetzen.
du kannst den Wert entweder direkt als "1.75" in die Textbox schreiben, oder VBA diese Arbeit erledigen lassen:
Cells(...).Value = Replace(Textbox1.Text, ",", ".")
die andere Möglichkeit wäre, du benutzt die Umwandlungsfunktion CDBL() um die Wandlung von Text in Zahl zu machen und schreibst dann die Zahl in die Zelle.
Die Umwandlungsfunktion orientiert sich wieder an den deutschen Schreibweisen.
Hier brauchst du, um Abbrüche bei Fehlern zu vermeiden, die Überprüfung ob sich der eingegebene Wert auch in eine Zahl wandeln lässt:
If IsNumeric(Textbox1.Text) Then Cells(...).Value = CDbl(Textbox1.Text)

das IsNumeric prüft auch nach deutschen Regeln.
Gruß Daniel
Anzeige
AW: Aus Textbox wird keine Dezimalzahl übergeben
11.03.2018 16:05:57
Andreas
Hallo Daniel,
vielen Dank für den Exkurs und die Hilfe. Mit Hilfe von Jochen benutze ich jetzt folgenden Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57, 8, 44
Case Else
KeyAscii = 0
MsgBox "Es sind nur Ziffern und Komma zulässig!", vbInformation, "Hinweis"
End Select
End Sub

Private Sub TextBox1_AfterUpdate()
If TextBox1 = Empty Then TextBox1 = 0
End Sub
Damit scheint alles zu Funktionieren.
Eine schönes Rest-WE.
mfg, Andreas
Anzeige

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige