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

Berechnung in Userform

Forumthread: Berechnung in Userform

Berechnung in Userform
04.03.2025 21:36:10
chris58
Hallo !
Ich habe eine unverschämte Bitte und würde Euch ersuchen mir zu helfen.
Seit einigen Tagen versuche ich in eine Userform bei Eingabe von Datums in TextBox1 und Textbox2 in die dritte TextBox3 eine Berechnung aus einer Liste zu bringen.
Ich kann gar nicht sagen, welche UF ich schon probiert habe - ich kann es nicht.
Doch bevor ich es aufgebe und es jedesmal zu Fuß rechne, bitte ich Euch um Eure Hilfe.
Danke im voraus für Eure Zeit, falls sich irgendwer annimmt.
chris58

Hier eine Datei von vielen, die ich hier reinstelle:
https://www.herber.de/bbs/user/176124.xls

Ich habe es auch mit diesem VBA Code versucht, bin aber kläglich gescheitert.

Private Sub txt_Datum1_AfterUpdate()
If IsDate(txt_Datum1.Value) Then
lblErgebnis = CDate(txt_Datum2.Value) - CDate(txt_Datum1.Value) + 1
Else
MsgBox "Kein Datum"
txt_Datum1.Value = Date
End If
With txt_Datum1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub
Private Sub txt_Datum2_AfterUpdate()
If IsDate(txt_Datum2.Value) Then
lblErgebnis = CDate(txt_Datum2.Value) - CDate(txt_Datum1.Value)
Else
MsgBox "Kein Datum"
txt_Datum2.Value = Date
End If
End Sub
Private Sub UserForm_Initialize()
txt_Datum1.Value = Date
txt_Datum2.Value = Date
lblErgebnis = CDate(txt_Datum2.Value) - CDate(txt_Datum1.Value)
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Berechnung in Userform
04.03.2025 22:34:39
Crazy Tom
moin,

und was willst du rechnen?

mfg Tom
AW: Berechnung in Userform
04.03.2025 22:40:14
Alwin Weisangler
Hallo Chris,

du möchtest in Textbox1 und in Textbox2 ein Datum eingeben und diese addieren. Da wird logischerweise ein ziemlich weit in der Zukunft liegendes Datum rauskommen. Die Differenz macht aber Sinn und das wäre dann:


Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox1) Or Not IsNumeric(TextBox2) Then Exit Sub
TextBox3 = CDate(TextBox2) - CDate(TextBox1)
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox1) Or Not IsNumeric(TextBox2) Then Exit Sub
TextBox3 = CDate(TextBox2) - CDate(TextBox1)
End Sub


Wenn du ein Startdatum in TextBox1 vorgibst und in Textbox2 die Anzahl der Tage eingibst wäre dies dann so:


Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox1) Or Not IsNumeric(TextBox2) Then Exit Sub
TextBox3 = DateSerial(Year(TextBox1), Month(TextBox1), Day(TextBox1) + CDbl(TextBox2))
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(TextBox1) Or Not IsNumeric(TextBox2) Then Exit Sub
TextBox3 = DateSerial(Year(TextBox1), Month(TextBox1), Day(TextBox1) + CDbl(TextBox2))
End Sub


Gruß Uwe
Anzeige
AW: Berechnung in Userform
05.03.2025 08:54:30
chris58
Hallo !
Ich möchte diese Formel in der Textbox3 - diese soll eine Berechnung vom Datum (Textbox1) zu Datum (TextBox2) erstellen.
Kann man das machen ?
chris58

=SUMMENPRODUKT((A47:A65000*1>=TextBox1)*(A47:A65000*1=TextBox2)*J47:J65000)
AW: Berechnung in Userform
05.03.2025 10:11:22
hary
Moin
Mit Evaluate geht es.
TextBox3 = Evaluate("=SUMPRODUCT((A47:A65000*1>=" & CLng(CDate(TextBox1)) & ")*(A47:A65000*1=" & CLng(CDate(TextBox2)) & ")*J47:J65000)")

Du musst natuerlich vorher pruefen ob in den anderen Textboxen ein Datum steht.
gruss hary
Anzeige
AW: Berechnung in Userform
05.03.2025 12:46:55
chris58
Danke hary !
Rechnen tut das Ding nur es rechnet nicht alles.
Kann es sein, das, weil ich Excel2003 habe, die Formel nicht optimal greift ?

Es kam zuerst ein Laufzeitfehler: ´-2147352571 (80020005)´:
Eigenschaft Value konnte nicht gesetzt werden. Typenkonflikt.


Da hab ich dann das Datum in Spalte A in Datum konvertiert und bei der Formel *1 rausgenommen.
Kein Laufzeitfehler mehr - dafür rechnet das Ding - jedoch falsch.
An was kann es liegen - wenn nötig könnte ich eine Originaldatei (abgespeckt - also sehr abgespeckt) hochladen.
Danke erstmals für Deine Hilfe
chris58
Anzeige
AW: Berechnung in Userform
05.03.2025 13:42:23
Alwin Weisangler
Hallo,

ja, entweder alle Daten (Mrz. von Datum) als Echte oder
via Schleife so:


Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(TextBox1) And IsDate(TextBox2) Then Summieren
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(TextBox1) And IsDate(TextBox2) Then Summieren
End Sub

Private Sub Summieren()
Dim lz&, i&, Summe#
With Tabelle1
lz = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 47 To lz
If .Cells(i, 1) >= CDate(TextBox1) And .Cells(i, 1) = CDate(TextBox2) Then
Summe = Summe + .Cells(i, 10)
End If
Next
End With
TextBox3 = Summe
End Sub


Besser noch die Berechnung im Array erledigen:


Private Sub Summieren()
Dim i&, Summe#, arr(): arr = Tabelle1.Range("A47:L" & Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row).Value
For i = LBound(arr) To UBound(arr)
If arr(i, 1) >= CDate(TextBox1) And arr(i, 1) = CDate(TextBox2) Then
Summe = Summe + arr(i, 10)
End If
Next i
TextBox3 = Summe
End Sub


Gruß Uwe
Anzeige
Das funktioniert...
05.03.2025 17:25:31
Case
Moin Chris, :-)

... schon (UserForm aufrufen und in TextBox3 klicken): ;-)
https://www.herber.de/bbs/user/176135.zip

Es macht nur Probleme, weil dein Datum in Spalte A teilweise Text ist. ;-)

Also er gibt das richtige Ergebnis aus: ;-)
Userbild

Bei einer UserForm ist immer das Problem, wenn man Daten in ein Tabellenblatt schreibt, dann sind der Inhalt von TextBoxen IMMER TEXT! Da muss man aufpassen bzw. anpassen. ;-)

Ich würde auch den Bereich in der Formel eingenzen (nicht bis 65000). ;-)

Servus
Case
Anzeige
AW: Das funktioniert...
06.03.2025 11:23:59
Oberschlumpf
Hey Case,

lange beobachtet, jetzt muss ich doch mal fragen:
Wieso schreibst du hinter fast jedem Satz fast immer ein :-) oder ;-)
Danke.

Ciao
Thorsten
Nun...
06.03.2025 11:55:31
Case
Moin Thorsten, :-)

... seit ich in Rente bin wache ich jeden Morgen mit einem breiten Grinsen im Gesicht auf. ;-)

Und ich bin jetzt VIEL entspannter. ;-)

Daran soll die ganze Welt teilhaben. ;-)

Reicht das, oder muss ich weiter ausholen? 8-)

Servus
Case
Anzeige
AW: Nun...
06.03.2025 12:03:31
Oberschlumpf
Hi,

nee, musste nich, vielen Dank für die Erklärung - zumindest jetzt versteh ich dich besser.

Ciao
Thorsten
Nochmal an ALLE ein herzliches Danke
06.03.2025 12:25:39
chris548
Ich möchte mich nochmal bei ALLEN die Ihre Zeit geopfert haben, herzlich bedanken.
Ich bin (Heute :)).....) voll zufrieden, aber wer weiß, was noch kommt in der heutigen Zeit.
Danke
chris58
Anzeige
AW: Berechnung in Userform
05.03.2025 14:05:07
chris58
Hallo !
Ich habe die Datei nun hochgeladen. Ich habe beides ausprobiert. Bei dem Neuen VBA Code wird gar nichts gerechnet.
Beim alten Code falsch.
Hier die Datei
lg chris58

https://www.herber.de/bbs/user/176132.xls

P.S.: Das Datum in der Datei ist ein Beispiel.
Anzeige
Danke (2 Nachkommastellen möglich ?)
05.03.2025 14:57:20
chris58
Hallo Uwe !
Danke für dieses Wunderwerk.
Eines noch: Kann man bei der Textbox3 zwei Nachkommastellen formatieren.
Habe das probiert, doch........................ naja...........
TextBox3.Text = Format(betrag2, "#,##0.00")
Danke nachmal
chris58
Anzeige
TextBox3 = Format(Summe, "0.00#,##")
05.03.2025 15:23:47
Alwin Weisangler
OWT

Gruß Uwe
Combobox in UF einbinden
06.03.2025 10:33:55
chris58
Hallo !
Ich habe noch eine Kleinigkeit für die UF. Ich habe eine Auswahlbox in die UF erstellt um nicht nur die Spalte J sondern auch die anderen Spalten berechnen zu können.
Doch, ich brauche wieder Eure Hilfe. Das mit der Auswahlbox habe ich hingekriegt (eventuell die Größe der Buchstaben auch anpassen), nur nicht das mir dann der Code die Spalte mit dem Datum berechnet.
Bitte helft mir nochmal
Danke chris58

https://www.herber.de/bbs/user/176138.xls
Anzeige
Das kannst du...
06.03.2025 11:17:53
Case
Moin, :-)

... z. B. so machen: ;-)
https://www.herber.de/bbs/user/176140.xls

Also es geht: ;-)

Userbild

Du kannst auch andere Formate - abhängig vom Buchstaben der ComboBox nehmen - wenn du es brauchst. ;-)

Servus
Case
Anzeige
AW: Combobox in UF einbinden
06.03.2025 11:54:59
Alwin Weisangler
Hallo Chris,

Falls du immer noch Daten im Textformat in Spalte A drin hast und die Berechnung noch nicht mit deiner ursprünglichen Formel machst, wäre es dann so:


Option Explicit

Private Sub ComboBox1_Change()
Summieren
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Summieren
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Summieren
End Sub

Private Sub Summieren()
Dim i&, Summe#, arr(): arr = Tabelle2.Range("A23:L" & Tabelle2.Cells(Rows.Count, 1).End(xlUp).Row).Value
If IsDate(TextBox1) And IsDate(TextBox2) Then
For i = LBound(arr) To UBound(arr)
If arr(i, 1) >= CDate(TextBox1) And arr(i, 1) = CDate(TextBox2) Then
Summe = Summe + arr(i, 7 + ComboBox1.ListIndex)
End If
Next i
TextBox3 = Format(Summe, "0.00#,##")
End If
End Sub

Private Sub CommandButton1_Click()
UserForm4.Show
End Sub

Private Sub UserForm_Activate()
With ComboBox1
.List = Array("G", "H", "I", "J", "K", "L")
.ListIndex = 0
End With
End Sub


Gruß Uwe
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige