Anzeige
Archiv - Navigation
1412to1416
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

Textbox rechnen

Textbox rechnen
17.03.2015 09:00:08
Andre
Hallo Liebes Forum,
ich habe 3 Textboxen in Textbox1 soll das ergebnis von Txt3 und Text2 stehen. Es soll mir auch ein Minuswert anzeigen z. B. -123,36
Danke

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textbox rechnen
17.03.2015 09:05:40
Hajo_Zi
Textbox1=Cdbl(textbox1)-Cdbl(Textbox2)
Gruß Hajo

AW: Textbox rechnen
17.03.2015 09:11:21
Andre
Die eine Frage hat sich von alleine gelöst.
Nun noch eine andere Frage wie ist der VBA zum runden einer Zahl in einer Textbox?

Application.WorksheetFunction.Round() owT
17.03.2015 09:24:18
Jack_d
ohne weiteren Text

AW: Application.WorksheetFunction.Round() owT
17.03.2015 09:32:06
Andre
Wo muss das rein? in die Sub Textbox oder wohin?

AW: Application.WorksheetFunction.Round() owT
17.03.2015 09:47:11
Jack_d
Das muss dort hin, wo die gerundete Zahl erscheinen soll.
Ist relativ schwierig das in deinen Code zu implementieren. (Man sieht ihn schlicht nicht)
Grüße

AW: Application.WorksheetFunction.Round() owT
17.03.2015 09:50:25
Andre
If TextBox9.Text = "" Then
MsgBox "Bitte Preis pro Jahr eingeben!"
Else
TextBox18 = CDbl(TextBox9.Text) * CDbl(TextBox10.Text) / 365
End If
End Sub

Anzeige
AW: Application.WorksheetFunction.Round() owT
17.03.2015 09:59:23
Jack_d
An diese Stelle würde ich es machen.
Es sei denn, du willst die einzelnen Terme runden. (Weiss aber grad nicht exakt ob dann mit genauen Werten oder gerundeten Werten weiter gerechnet wird)
XXX sei in dem Fall die Anzahl an Nachkommastellen
If TextBox9.Text = "" Then
MsgBox "Bitte Preis pro Jahr eingeben!"
Else
TextBox18 = Application.WorksheetFunction.Round(CDbl(TextBox9.Text) * CDbl(TextBox10.Text) /  _
365,XXX)
End If
End Sub

AW: Application.WorksheetFunction.Round() owT
17.03.2015 10:06:50
Andre
er rundet bei mir nicht habe statt der x eine 0 genommen auch da nicht es kommt immer nur eine ganze zahl raus woran liegt es?

Anzeige
AW: Application.WorksheetFunction.Round() owT
17.03.2015 10:14:01
Jack_d
Naja wenn er auf 0 Nachkommastellen rundet, kommt nunmal eine Ganzzahl raus. (Nachkommastellen werden gerundet)
Jetzt müsste man wissen was du machen willst.(Auf was du runden willst)
Wenn du Ganzzahlige Lösungen auf "Blöcke" runden willst, macht man das üblicherweise über eine Division mit anschliessender Multiplikation
Bspw. ganze Hunderter rundet man mit
X=runden("ungerundeterWert" /100, 0)*100
Grüße
Ps.: Wohl dem der seine Fragen exakt formuliert

AW: Application.WorksheetFunction.Round() owT
17.03.2015 10:16:42
Andre
naja wenn ich 135,12 * 366 in VBA rechne kommt 135,49019 ich möchte aber dass er 135,49 anzeigt.
Danke

Anzeige
AW: Application.WorksheetFunction.Round() owT
17.03.2015 10:22:12
Jack_d
Das ist beachtlich,
in meiner Mathe ergibt
366*135,12 = 49453,92 (und nicht 135,49)
Vielleicht ist dein Problem auch wo anders...?
Debug.Print (Application.WorksheetFunction.Round(366 * 135.12, 2))

Debug.Print (Application.WorksheetFunction.Round(366 * 135.12, 1))
Debug.Print 366 * 135.12
Mal zum Testen Sag mal, was im direktfenster steht?

AW: Application.WorksheetFunction.Round() owT
17.03.2015 10:27:21
Andre
ich muss aber 135,12 * 366 rechnen und das ergibt nun mal 135,49019
wie stelle ich das an den wert einer Textbox auf 2 stellen nach komma anzeigen zu lassen.?
Danke

Anzeige
AW: Application.WorksheetFunction.Round() owT
17.03.2015 12:13:46
P-Quest
Hallo Andre,
wenn du die Hilfe von Excel verwenden würdest, könntest du dort sehen, dass die Xe in der Lösung nur ein Platzhalter für die Anzahl der gewünschten Nachkommastellen waren. Selbst ohne Excelhilfe hättest du es durch ausprobieren herausfinden können. Einen Anfang hattest du ja schon mit der Null gemacht.
Bevor ich es vergesse, die Lösung für 2 Nachkommastellen lautet 2.
Was mich aber irritiert, wie wahrscheinlich jeden anderen Leser dieses Beitrags, ist dein beharren darauf, dass 366 * 135,12 = 135,49019 ergibt.
Wo kommt diese Zahl her? Der normale Menschenverstand sagt einem doch, das da etwas nicht stimmen kann.
Gruß,
Peter

Anzeige
AW: Application.WorksheetFunction.Round() owT
17.03.2015 10:28:27
Andre
135,12 * 366 /365 sorry hab ne zahl vergessen

AW: Application.WorksheetFunction.Round() owT
17.03.2015 10:35:13
Jack_d
Eigentlich ist es ehal wo0 man die 2 Zeilen schreibt.
Kopier das Makro und lass es laufen.
Sub Rundung()
Debug.Print (Application.WorksheetFunction.Round(366 * 135.12 / 365, 1))
Debug.Print (Application.WorksheetFunction.Round(366 * 135.12 / 365, 2))
Debug.Print 366 * 135.12 / 365
End Sub

Vielleicht ist es ja erhellend =)

AW: Application.WorksheetFunction.Round() owT
17.03.2015 09:47:58
Rudi
Hallo,
Wo muss das rein?
da wo du es brauchst.
Gruß
Rudi

AW: Application.WorksheetFunction.Round() owT
17.03.2015 09:52:02
Andre
muss das in die zeile mit Private Sub...
oder woanders hin

Anzeige
AW: Application.WorksheetFunction.Round() owT
17.03.2015 10:59:07
Werner
Halo Andre,
ich mache hier den Umweg über eine Variable. Rechenergebnis wird zuerst in die Variable geschrieben, anschließend wird die Variable gerundet und dann mit diesem Ergebnis die Textbox gefüllt.
Private Sub CommandButton1_Click()
Dim Ergebnis As Double
If TextBox9.Text = "" Then
MsgBox "Bitte Preis pro Jahr eingeben!"
Else
Ergebnis = CDbl(TextBox9.Text) * CDbl(TextBox10.Text) / 365
Ergebnis = WorksheetFunction.Round(Ergebnis, 2)
TextBox18 = Ergebnis
End If
End Sub
Gruß Werner

AW: Noch was
17.03.2015 11:33:00
Werner
Hallo Andre,
zudem würde ich nach der MsgBox den Focus wieder auf die TextBox9 legen, da erwartest du ja eine Eingabe. Am Makro Ende würde ich den Focus dann erneut auf die TextBox9 legen für die nächste Eingabe.
Private Sub CommandButton1_Click()
Dim Ergebnis As Double
If TextBox9.Text = "" Then
MsgBox "Bitte Preis pro Jahr eingeben!"
TextBox9.SetFocus
Else
Ergebnis = CDbl(TextBox9.Value) * CDbl(TextBox10.Value) / 365
Ergebnis = WorksheetFunction.Round(Ergebnis, 2)
TextBox18 = Ergebnis
TextBox9.SetFocus
End If
End Sub
Weiterhin solltest du bei Eigenschaften von TextBox18 Locked auf True stellen. TextBox18 ist ja ein reines Ausgabefeld in dem keine Änderungen möglich sein sollten.
Gruß Werner

Anzeige
AW: Noch was
17.03.2015 11:57:52
Werner
Hallo Andre,
solltest du das Rechenergebnis immer mit zwei Nachkommastellen benötigen dann ersetze die Code Zeile
TextBox18 = Ergebnis
durch
TextBox18 = Format((Ergebnis), "#,##0.00")
Gruß Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige