Clever-Excel-Forum

Normale Version: Userform Summe berechnen, mit anderem Textboxwert addieren und ausgeben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Moin zusammen,
ich versuche die Summe eines Zellenbereichs mit dem Wert einer Textbox zu verrechnen und diese in einer weiteren Textbox als Gesamtergebnis anzuzeigen.

Dies war mein letzter Versuch:

Private Sub TextBox6_Change()
Dim Summe1 As Integer
Summe1.Value = WorksheetFunction.Sum(Range("H5:H370"))
Gesatsumme = Summe1 + CDbl(TextBox5.Value)
TextBox6.text = Gesamtsumme


Wer könnte mit weiterhelfen?

Gruß
Björn
Hallo Björn, 19 

lösche bei "Summe1.Value" das ".Value" - und schreibe "Gesamtsumme" nicht einmal so "Gesatsumme" und einmal so "Gesamtsumme". Also dimensioniere es, dann musst du es richtig schreiben.

Ich würde hier auch nicht Integer nehmen. 21
(02.07.2022, 21:18)Case schrieb: [ -> ]Hallo Björn, 19 

lösche bei "Summe1.Value" das ".Value" - und schreibe "Gesamtsumme" nicht einmal so "Gesatsumme" und einmal so "Gesamtsumme". Also dimensioniere es, dann musst du es richtig schreiben.

Ich würde hier auch nicht Integer nehmen. 21

Moin,
danke für die Antwort.
Da ich noch immer blutiger VBA-Neuling bin folgende Frage:
Warum nicht Integer, wegen Kommazahlen?

Die vorgeschlagenen Änderungen haben nicht wirklich geholfen.

Es kam die Fehlermeldung, dass eine Variable nicht definiert ist und das Wort "Gesamtsumme" wurde blau unterlegt.
Daraufhin habe ich
"Dim Gesamtsumme As Double"
hinzugefügt.

Ich habe daraufhin alle Datentypen bis auf Boolean, Date, Longlong, Singel, Object und Date ausprobiert und ich bekomme immer dieselbe Fehlermeldung:
Laufzeitfehler 13, Typen unverträglich.

Aktuelle sieht der Code so aus:

Private Sub TextBox6_Change()
Dim Summe1 As Double
Dim Gesamtsumme As Double
Summe1 = WorksheetFunction.Sum(Range("H5:H370"))
Gesamtsumme = Summe1 + CDbl(TextBox5.Value)
TextBox6.text = Gesamtsumme
End Sub
Hallo Björn, 19 

Double ist hier die richtige Wahl. In meiner Beispieldatei funzt das: 21
[attachment=43956]

Ich habe noch den CodeNamen (der Name VOR der Klammer im VBA-Editor) des Tabellenblattes vor Range geschrieben. Hilft, wenn du bei Ausführung der UserForm nicht auf dem Tabellenblatt bist, wo du die Summe bilden willst.

Ob das Change-Ereignis der TextBox6 das richtige Ereignis ist kannst nur du wissen. Es kommt immer auf die Arbeitsweise bzw. was du erreichen willst an. Dodgy
Moin,
nochmals danke für Deine Antwort, aber ich bin jetzt noch ratloser als vorher.
Dein Beispiel funktioniert bei mir nicht, außer der 10 sehe ich nichts in der UF.

Ob das Change-Ereignis der TextBox6 das richtige Ereignis ist, kannst nur du wissen.

Wenn man Ahnung hat, vielleicht.
Wie gesagt, davon bin ich noch ganz weit entfernt.

Folgendes...
ich bin dabei eine Art Kalender zu erstellen.
In der ich über eine Userform die Arbeitszeit von-bis eingebe (TextBoxen 2 und 3), in der die Arbeitszeit automatisch berechnet wird (Textbox4) und die Überstunden pro Tag extra (Textbox5) ausgewiesen und in einen "Kalender" eingetragen werden.
Das funktioniert einwandfrei.

Jetzt möchte ich die Gesamtüberstunden in einer weiteren Textbox(6) anzeigen lassen.
Die zum einen aus den bereits erfassten Überstunden (Range H5 bis H370) bestehen, welche beim öffnen der Userform in der Textbox6 angezeigt werden.

Wenn ich jetzt einen neuen Eintrag vornehme, möchte ich, dass mir angezeigt wird, wie sich die Gesamtüberstundenzahl (TextBox6) durch den Neueintrag verändern wird und möchte nicht bis zum nächsten Öffnen der Userform warten.

Im Vorfeld habe ich für alle anderen TextBox-Codes als Ereignis "Change" gewählt und deshalb habe ich auch für den TextBox6-Code "Change" gewählt.
(03.07.2022, 19:39)Björn.412 schrieb: [ -> ]Moin,
nochmals danke für Deine Antwort, aber ich bin jetzt noch ratloser als vorher.
Dein Beispiel funktioniert bei mir nicht, außer der 10 sehe ich nichts in der UF.

Hallo Björn, 19 

doch das Beispiel funktioniert. Du hat ja das "Change-Ereignis" gewählt. Das habe ich dann auch gemacht. Das muss natürlich ausgelöst werden. Das kannst du auch gleich machen, wenn du in TextBox5 eine Zahl eingibst. Ich habe da eine 10 fest eingegeben - ich kenne ja deine Daten nicht bzw. was du machst. Dodgy

Also wenn du in TextBox6 bist, dann z. B. mal die Leertaste betätigt, oder irgendeine Taste, dann klappts auch mit dem Nachbarhund. Oder wie in folgendem Beispiel in TextBox5 eine Zahl schreiben: 21
 [attachment=43967]

Falls du garnicht klar kommst, könntest du eine Beispieldatei zur Verfügung stellen. Ich habe keine Lust nach Vorgabe eine selber zu basteln und dann zu hören, dass das in deiner Datei nicht funktioniert. 21
Moin,
sorry, dass ich mich erst jetzt für Deine erneute Antwort bedanke.

Dein Beispiel funktioniert und weicht in einem Punkt von meiner Datei ab.
Bei mir wird in der TextBox 6 bereits ein Wert angezeigt, bevor durch eine weitere Eingabe der Wert in der Textbox 6 neu berechnet werden soll.

Anbei mein Kalender (der befindet sich noch im Rohbau, nicht über Datenmüll wundern)

Funktion:
Über neu oder durch klicken auf ein Datum öffnet sich die Userform.
Man gibt ein Datum ein "13.01.2022"
Die Uhrzeiten für den Arbeitstag "7:00 und 16:30"
TextBox 4 berechnet die Arbeitsstunden des Tages.
TextBox 5 weist die Überstunden des Tages aus.
TextBox 6 zeigt die Gesamtüberstunden beim Öffnen der Userform an.
Ziel TextBox6 = Die angezeigten Gesamtüberstunden neu zu berechnen, wenn TextBox5 einen Wert >< "0" ausweist und bevor die Userform neu gestartet wird.
PHP-Code:
Private Sub TextBox5_Change()
   Textbox6 = [sum(H5:H370)]+Textbox5
End Sub 

TextBox5_change
Hallo Björn, 19 

schau dir die Unterschiede an: 21
[attachment=44063]
(09.07.2022, 16:38)Case schrieb: [ -> ]Hallo Björn, 19 

schau dir die Unterschiede an: 21

Moin,
mal wieder meinen herzlichsten Dank für Deine Hilfe.

Und wie ich sehen konnte, war ich der Lösung schon mal sehr nahe.

Weiter konnte ich sehen, dass Du so nett warst und bereits meinen nächsten Punkt einen Schubs gegeben hast.
Seiten: 1 2