Ich kaue an folgendem Problem:
Ausgangslage und Problem
Eine UserForm("frmCostsPW") enth?lt eine Combobox("cboFare") und drei Textboxen("txtKm","txtTpD","txtDpM"), die auszuf?llen sind. Anhand der Eingaben sollen in zwei weiteren Textboxen("txtKmMonth","txtTotal") jeweils die Ergebnisse der Berechnung mit jedem Wechsel der Eingabe "live" angezeigt werden.
Leider ist die Ausgabe in txtTotal manchmal v?llig falsch und manchmal richtig, je nach ?nderungen an den vier Eingabe-Textboxen. Ich vermute, dass es sich um ein Formatierungsproblem der Textboxen handelt.
Funktionsweise der UserForm
F?r die UserForm verwende ich f?r jede der vier Eingabe-Textboxen ein Change-Ereignis, das dann automatisch die Ergebnisse in den Textboxen "txtKmMonth" und "txtTotal" anzeigt. Weiter verwende ich auch jeweils eine Exit-Prozedur, damit diese vier Textboxen auch wirklich ausgef?llt werden.
Hierzu im Auszug der Code:
Private Sub cboFare_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Hier muss der Nutzer den Kilometertarif eintragen
If IsNumeric(cboFare) Then
cboFare = Format(cboFare, "#,###.00")
Else: MsgBox "Bitte eine Auswahl treffen", vbInformation, "Warnhinweis"
cboFare = ""
Cancel = True
End If
Sheets("RawData").Range("U1") = cboFare
cboFare = Format(cboFare, "#,###.00")
End Sub
Private Sub cboFare_Change()
'Berechnet das monatliche Kilometertotal und die monatlichen Kosten mit jeder ?nderung von _
cboFare
Sheets("RawData").Range("U1") = cboFare
cboFare = Format(cboFare, "#,###.00")
txtTotal = Sheets("RawData").Range("U6")
txtTotal = Format(txtTotal, "#,###.00")
End Sub
Private Sub txtKm_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Hier ist die Anzahl Kilometer pro Fahrt einzutragen
If IsNumeric(txtKm) Then
txtKm = Format(txtKm, "#,###.00")
Else: MsgBox "Bitte eine Auswahl treffen", vbInformation, "Warnhinweis"
cboFare = ""
Cancel = True
End If
Sheets("RawData").Range("U2") = txtKm
txtKm = Format(txtKm, "#,###.00")
End Sub
Private Sub txtKm_Change()
'Berechnet das monatliche Kilometertotal und die monatlichen Kosten mit jeder ?nderung von _
txtKm
Sheets("RawData").Range("U2") = txtKm
txtKmMonth = Sheets("RawData").Range("U5")
txtKmMonth = Format(txtKmMonth, "#,###.00")
txtTotal = Sheets("RawData").Range("U6")
txtTotal = Format(txtTotal, "#,###.00")
End Sub
Private Sub cboTpD_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Hier ist die Anzahl Fahrten pro Tag einzutragen
If IsNumeric(cboTpD) Then
cboTpD = Format(cboTpD, "#,###")
Else: MsgBox "Bitte eine Auswahl treffen", vbInformation, "Warnhinweis"
cboTpD = ""
Cancel = True
End If
Sheets("RawData").Range("U3") = cboTpD
cboTpD = Format(cboTpD, "#,###")
End Sub
Private Sub cboTpD_Change()
'Berechnet das monatliche Kilometertotal und die monatlichen Kosten mit jeder ?nderung von _
cboTpD
Sheets("RawData").Range("U3") = cboTpD
txtKmMonth = Sheets("RawData").Range("U5")
txtKmMonth = Format(txtKmMonth, "#,###.00")
txtTotal = Sheets("RawData").Range("U6")
txtTotal = Format(txtTotal, "#,###.00")
End Sub
Private Sub cboDpM_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Hier ist die Anzahl Tage pro Monat einzutragen, an denen gefahren wird
If IsNumeric(cboDpM) Then
cboDpM = Format(cboDpM, "#,###")
Else: MsgBox "Bitte eine Auswahl treffen", vbInformation, "Warnhinweis"
cboFare = ""
Cancel = True
End If
Sheets("RawData").Range("U4") = cboDpM
cboDpM = Format(cboDpM, "#,###")
End Sub
Private Sub cboDpM_Change()
'Berechnet das monatliche Kilometertotal und die monatlichen Kosten mit jeder ?nderung von _
cboDpM
Sheets("RawData").Range("U4") = cboDpM
txtKmMonth = Sheets("RawData").Range("U5")
txtKmMonth = Format(txtKmMonth, "#,###.00")
txtTotal = Sheets("RawData").Range("U6")
txtTotal = Format(txtTotal, "#,###.00")
End Sub
Die eingegebenen Daten werden jeweils direkt in ein verstecktes Tabellenblatt eingespiesen, _ damit beim erneuten Start des Programmes die get?tigten Eingaben nach wie vor vorhanden sind. Hier der Code dazu:
Private Sub UserForm_Initialize()
'Funktion: Bef?llt frmCostsPW mit den bereits vorhandenen Daten
'Setzt Hintergrundfarbe ein
Dim ColorUHR As Long
ColorUHR = RGB(130, 175, 215)
frmCostsPW.BackColor = ColorUHR
'Bef?llt UserForm mit vorhandenen Daten aus RawData
With cboFare
.AddItem Sheets("RawData").Range("T1").Text
.AddItem Sheets("RawData").Range("T2").Text
.AddItem Sheets("RawData").Range("T3").Text
.AddItem Sheets("RawData").Range("T4").Text
.AddItem Sheets("RawData").Range("T5").Text
.AddItem Sheets("RawData").Range("T6").Text
.AddItem Sheets("RawData").Range("T7").Text
.AddItem Sheets("RawData").Range("T8").Text
.AddItem Sheets("RawData").Range("T9").Text
.AddItem Sheets("RawData").Range("T10").Text
End With
cboFare = Sheets("RawData").Range("U1")
txtKm = Sheets("RawData").Range("U2")
cboTpD = Sheets("RawData").Range("U3")
cboDpM = Sheets("RawData").Range("U4")
End Sub
FrageWas l?uft bei der Formatierung der Textbox "txtTotal" falsch bzw. wo liegt mein Denkfehler? Ich komme einfach zu keiner L?sung!