ich bin verzweifelt.
Grundsätzlich versuche ich ja schon erstmal alleine meinen selbst fabrizierten Unfug zu bereinigen. Ich habe aber hier in meiner Planungsrechnung einen Laufzeitfehler und bekomme nicht heraus was das Problem ist.
Ich habe eine Userform "UFVormonate" mit 2 multipages.
auf jeder page befinden sich 3 Textboxen, insgesamt also 6 Stück.
Click auf den Commandbutton soll die in den Textboxen eingetragenen Zahlen in die Zellen ab Zeile 66 schreiben. Die zu befüllende Zeile wird dabei davon abhängig gemacht, ob in den Zeilen 44 bis 47 eine "1" steht oder nicht (da steht jeweils nur in einer dieser 4 Zeilen eine 1).
merkwürdig ist, dass die Textbox1 anstandslos zu funktionieren scheint. Der Laufzeitfehler kommt mir erst bei der Textbox2. Ich habe deshalb die Anweisung für die Textbox2 mal auskommentiert und der Fehler erschien dann bei Textbox3.
Ich habe allerdings ALLE übrigen 5 Textboxen erstellt indem ich die Textbox1 kopiert habe. Ich kann also beim besten Willen nicht erkennen, warum Textbox1 geht und die anderen nicht.
Hängt doch sicherlich zusammen mit der Formatiererei bei den Textboxen (ich will natürlich Zahlen mit 2 Kommastellen erzwingen) oder?
Wer hat die Muße sich das hier rein zu ziehen?
Der Code der Userform:
(die Initialisierung der Userform nur der Vollständigkeit halber, vielleicht mache ich ja da _ schon was falsch)
Private Sub UserForm_Initialize()
ActiveSheet.Unprotect
MultiPage1.Value = 0 'immer die erste Multipage-Seite anzeigen
MultiPage1.Pages(0).Caption = "Umsätze " & ActiveSheet.Range("B60").Value
MultiPage1.Pages(1).Caption = "Umsätze " & ActiveSheet.Range("B61").Value
Label4.Caption = ActiveSheet.Range("D60").Value & " 19% USt"
Label5.Caption = ActiveSheet.Range("D60").Value & " 7% USt"
Label6.Caption = ActiveSheet.Range("D60").Value & " 0% USt"
Label7.Caption = ActiveSheet.Range("D60").Value & " 19% USt"
Label8.Caption = ActiveSheet.Range("D60").Value & " 7% USt"
Label9.Caption = ActiveSheet.Range("D60").Value & " 0% USt"
TextBox1 = Format(TextBox1, "#,##0.00")
TextBox2 = Format(TextBox2, "#,##0.00")
TextBox3 = Format(TextBox3, "#,##0.00")
TextBox4 = Format(TextBox4, "#,##0.00")
TextBox5 = Format(TextBox5, "#,##0.00")
TextBox6 = Format(TextBox6, "#,##0.00")
'die Summen der Einträge von der letzten Eingabe wieder in die Textboxen übernehmen
TextBox1 = ActiveSheet.Range("F78").Value
TextBox2 = ActiveSheet.Range("F79").Value
TextBox3 = ActiveSheet.Range("F80").Value
TextBox4 = ActiveSheet.Range("E78").Value
TextBox5 = ActiveSheet.Range("E79").Value
TextBox6 = ActiveSheet.Range("E80").Value
If ActiveSheet.Range("D5").Value = "nein" Then
MultiPage1.Pages(1).Visible = False 'die zweite Seite ausblenden, wenn keine DFV gewährt wurde
End If
'die letzten Angaben für die Vormonate wieder löschen
'Events abschalten, da sonst das worksheet.change Ereignis durchlaufen wird
Application.EnableEvents = False
ActiveSheet.Range("E66:F77").ClearContents
Application.EnableEvents = True
ActiveSheet.Protect
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'alle 6 TextBoxen der Userform mit Dezimalzahlen erzwingen
TextBox1 = Format(TextBox1, "#,##0.00")
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case 44, 46: KeyAscii = IIf(InStr(1, TextBox1, ",") = 0, 44, 0)
Case Else: KeyAscii = 0
End Select
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox2 = Format(TextBox2, "#,##0.00")
End Sub
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case 44, 46: KeyAscii = IIf(InStr(1, TextBox2, ",") = 0, 44, 0)
Case Else: KeyAscii = 0
End Select
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox3 = Format(TextBox3, "#,##0.00")
End Sub
Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case 44, 46: KeyAscii = IIf(InStr(1, TextBox3, ",") = 0, 44, 0)
Case Else: KeyAscii = 0
End Select
End Sub
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox4 = Format(TextBox4, "#,##0.00")
End Sub
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case 44, 46: KeyAscii = IIf(InStr(1, TextBox4, ",") = 0, 44, 0)
Case Else: KeyAscii = 0
End Select
End Sub
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox5 = Format(TextBox5, "#,##0.00")
End Sub
Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case 44, 46: KeyAscii = IIf(InStr(1, TextBox5, ",") = 0, 44, 0)
Case Else: KeyAscii = 0
End Select
End Sub
Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox6 = Format(TextBox6, "#,##0.00")
End Sub
Private Sub TextBox6_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case 44, 46: KeyAscii = IIf(InStr(1, TextBox6, ",") = 0, 44, 0)
Case Else: KeyAscii = 0
End Select
End Sub
Private Sub CommandButton1_Click()
ActiveSheet.Unprotect
Application.ScreenUpdating = False
'die aktuellen Angaben in die Planung übernehmen
With ActiveSheet
'Soll-Versteuerung / ohne DFV
If ActiveSheet.Cells(44, 3).Value = 1 Then
ActiveSheet.Cells(66, 6) = CDbl(TextBox1.Value)
ActiveSheet.Cells(67, 6) = CDbl(TextBox2.Value) 'ab hier hängts xxxxxxx
ActiveSheet.Cells(68, 6) = CDbl(TextBox3.Value)
ActiveSheet.Cells(66, 5) = CDbl(TextBox4.Value)
ActiveSheet.Cells(67, 5) = CDbl(TextBox5.Value)
ActiveSheet.Cells(68, 5) = CDbl(TextBox6.Value)
Else
End If
'Soll-Versteuerung / mit DFV
If ActiveSheet.Cells(45, 3).Value = 1 Then
ActiveSheet.Cells(69, 6) = CDbl(TextBox1.Value)
ActiveSheet.Cells(70, 6) = CDbl(TextBox2.Value) 'ab hier hängts xxxxxxx
ActiveSheet.Cells(71, 6) = CDbl(TextBox3.Value)
ActiveSheet.Cells(69, 5) = CDbl(TextBox4.Value)
ActiveSheet.Cells(70, 5) = CDbl(TextBox5.Value)
ActiveSheet.Cells(71, 5) = CDbl(TextBox6.Value)
Else
End If
'IST-Versteuerung / ohne DFV
If ActiveSheet.Cells(46, 3).Value = 1 Then
ActiveSheet.Cells(72, 6) = CDbl(TextBox1.Value)
ActiveSheet.Cells(73, 6) = CDbl(TextBox2.Value) 'ab hier hängts xxxxxxx
ActiveSheet.Cells(74, 6) = CDbl(TextBox3.Value)
ActiveSheet.Cells(72, 5) = CDbl(TextBox4.Value)
ActiveSheet.Cells(73, 5) = CDbl(TextBox5.Value)
ActiveSheet.Cells(74, 5) = CDbl(TextBox6.Value)
Else
End If
'IST-Versteuerung / mit DFV
If ActiveSheet.Cells(47, 3).Value = 1 Then
ActiveSheet.Cells(75, 6) = CDbl(TextBox1.Value)
ActiveSheet.Cells(76, 6) = CDbl(TextBox2.Value) 'ab hier hängts xxxxxxx
ActiveSheet.Cells(77, 6) = CDbl(TextBox3.Value)
ActiveSheet.Cells(75, 5) = CDbl(TextBox4.Value)
ActiveSheet.Cells(76, 5) = CDbl(TextBox5.Value)
ActiveSheet.Cells(77, 5) = CDbl(TextBox6.Value)
Else
End If
End With
ActiveSheet.Protect
Application.ScreenUpdating = True
Unload UFVormonate
End Sub