VBA Fehler Routine?
#1
Hallo liebe Excel Freunde,


ich habe eine Userform, wo man viele Zahlen in Textboxen eingibt (Bild Angehängt). Am Ende wird es dann jeweils in Labeln zusammen gerechnet und diese Ergebnise werden später in eine Tabelle übertragen.

Problem, sobald man in einer Textbox die Zahlen komplett löscht, kommt eine Fehlermeldung und man kann den debugger öffnen.
Da, wenn ich irgendwann mal Urlaub bekommen sollte, jemand anderes die Eintragungen vornimmt, ist das natürlich extrem doof.
Ich hoffe ihr versteht was ich meine.


Da es ein riesen Code ist, schreibe ich euch hier mal nur den Code für Innenbäckchen. Bei allen anderen Sieht der Code gleich aus
Bei Start der Userform:
Code:
Private Sub UserForm_Initialize()
Innen = "0"            'Label

Innen1 = "0"           'Textboxen
Innen2 = "0"
Innen3 = "0"
Innen4 = "0"
Innen5 = "0"
Innen6 = "0"
Innen7 = "0"
Innen8 = "0"
Innen9 = "0"

TextBox1 = ""          'Datum
TextBox2 = "0"         'Köpfe

End Sub

Berechnung:
Code:
Private Sub Innen1_Change()
Innen = CDbl(Innen1)
End Sub

Private Sub Innen2_Change()
Innen = CDbl(Innen1) + CDbl(Innen2)
End Sub

Private Sub Innen3_Change()
Innen = CDbl(Innen1) + CDbl(Innen2) + CDbl(Innen3)
End Sub

Private Sub Innen4_Change()
Innen = CDbl(Innen1) + CDbl(Innen2) + CDbl(Innen3) + CDbl(Innen4)
End Sub

Private Sub Innen5_Change()
Innen = CDbl(Innen1) + CDbl(Innen2) + CDbl(Innen3) + CDbl(Innen4) + CDbl(Innen5)
End Sub

Private Sub Innen6_Change()
Innen = CDbl(Innen1) + CDbl(Innen2) + CDbl(Innen3) + CDbl(Innen4) + CDbl(Innen5) + CDbl(Innen6)
End Sub

Private Sub Innen7_Change()
Innen = CDbl(Innen1) + CDbl(Innen2) + CDbl(Innen3) + CDbl(Innen4) + CDbl(Innen5) + CDbl(Innen6) + CDbl(Innen7)
End Sub

Private Sub Innen8_Change()
Innen = CDbl(Innen1) + CDbl(Innen2) + CDbl(Innen3) + CDbl(Innen4) + CDbl(Innen5) + CDbl(Innen6) + CDbl(Innen7) + CDbl(Innen8)
End Sub

Private Sub Innen9_Change()
Innen = CDbl(Innen1) + CDbl(Innen2) + CDbl(Innen3) + CDbl(Innen4) + CDbl(Innen5) + CDbl(Innen6) + CDbl(Innen7) + CDbl(Innen8) + CDbl(Innen9)
End Sub

Klick auf OK Button:
Code:
Private Sub CommandButton1_Click()
Dim x As Long


   
x = Sheets("Produktion").Range("A65536").End(xlUp).Row


Sheets("Produktion").Cells(x + 1, 1) = CDate(TextBox1.Text)
Sheets("Produktion").Cells(x + 1, 2) = CDbl(Format(TextBox2.Text, Number))
Sheets("Produktion").Cells(x + 1, 3) = CDbl(Format(Innen, Number))

TextBox1 = ""
TextBox2 = "0"

Innen = "0"

Innen1 = "0"
Innen2 = "0"
Innen3 = "0"
Innen4 = "0"
Innen5 = "0"
Innen6 = "0"
Innen7 = "0"
Innen8 = "0"
Innen9 = "0"

ActiveWorkbook.Save
End Sub


Angehängte Dateien Thumbnail(s)
   
Top
#2
Hallo,

jetzt nur ein Beispiel (außerdem die Kettung von deinen TextBoxen reicht es so)

Code:
Private Sub Innen2_Change()
Innen = Innen + CDbl(Val(Innen2))
End Sub
Gruß Stefan
Win 10 / Office 2016
Top
#3
Super danke,

habe es jetzt so umgesetzt, damit es auch keine Probleme gibt, wenn die Reihenfolge nicht eingehalten wird


Code:
Private Sub Innen1_Change()
Innen = CDbl(Val(Innen1)) + CDbl(Val(Innen2)) + CDbl(Val(Innen3)) + CDbl(Val(Innen4)) + CDbl(Val(Innen5)) + CDbl(Val(Innen6)) + CDbl(Val(Innen7)) + CDbl(Val(Innen8)) + CDbl(Val(Innen9))
End Sub


Dann brauche ich es ja auch theoretisch nicht mehr mit 0 füllen lassen.
Top
#4
Hallo,

als Nachtrag: Voraussetzung ist bei der Benutzung von Val dass Du nur ganze Zahlen eingibst.
Gruß Stefan
Win 10 / Office 2016
Top
#5
Sind zum Glück nur Ganzzahlen
Aber danke für den Hinweis :)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste