Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Laufzeitfehler 13
#1
Moin,

ich brauche als Anfänger mal wieder einen verständlichen Rat von Fachleuten.

Ich habe eine eine Userform mit 3 Textboxen, in der in ersten beiden Textboxen Werte eingetragen werden, die in der 3 multipliziert ausgegeben werden sollen.

Sobald die Werte aber nicht in der richtigen Reihenfolge eingegeben werden, erscheint der "Laufzeitfehler 13". Ich würde gerne immer dann, wenn ein Wert nicht gesetzt wird, dieses entsprechend mit einer Fehlermeldung angezeigt wird, alternativ dazu den Fehler vermeiden.
Hier mal mein "bescheidener" Code:

Private Sub TextBox7_Change()
Sheets("Tabelle3").Cells(25, 6).Value = TextBox7.Value
End Sub
Private Sub TextBox8_Change()
Sheets("Tabelle3").Cells(25, 8).Value = TextBox8.Value
TextBox9.Value = TextBox8.Value * TextBox7.Value
End Sub
Private Sub TextBox9_Change()
Sheets("Tabelle3").Cells(25, 9).Value = TextBox9.Value
End Sub
Über einen Commandbutton werden die Zellen und die dazu gehörige Excel-Tabelle wieder geleert. Hierbei taucht der gliche Fehler auf.

Was läuft verkehrt?

Besten Dank schonmal für Eure Mühe.
Antworten Top
#2
Hallo,

mit einem Leerstring kann nicht gerechnet werden. Versuche es mal so.

Code:
Private Sub TextBox8_Change()
Sheets("Tabelle3").Cells(25, 8).Value = TextBox8.Value
TextBox9.Value = Val(TextBox8.Value) * Val(TextBox7.Value)
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#3
Servus kulis,

Du könntest auch vor Deiner Berechnung abfragen, ob Zahlenwerte eingetragen wurden ...

Code:
Private Sub TextBox8_Change()
Sheets("Tabelle3").Cells(25, 8).Value = TextBox8.Value
If IsNumeric(TextBox7.Value) And IsNumeric(TextBox8.Value) Then
    TextBox9.Value = TextBox8.Value * TextBox7.Value
End If
End Sub
LG Gerd
Antworten Top
#4
Hallöchen,

eine kleine Anmerkung noch. Bei VAL entsteht lt. Microsoft der Datentyp Double (Gleitkommazahl doppelter Genauigkeit)

Trotzdem erhalte ich hier nur 1 und nicht 1.23 Sad:

Code:
Sub test()
Dim a, b As Double, c As Double
a = "A": b = 1.23
c = Val(a) + Val(b)
MsgBox c
End Sub
.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Hab schon wieder Probleme mit dem "Laufzeitfehler"

Ich hatte bisher den Code


TextBox9.Value = TextBox8.Value * TextBox7.Value



benutzt, weil hier auch Kommastellen mitberechnet werden.

Jetzt habe ich die Eingabe auf Zahlen einschl 2 Nachkommastellen begrenzt.

Nun erhalte ich, und nur wenn ich die Daten der UF mittels CommandButton löschen oder die UF verlassen will, wieder den Laufzeitfeher 13

Mit dem Code


Private Sub TextBox8_Change()
TextBox9.Value = Val(TextBox8.Value) * Val(TextBox7.Value)
End Sub


passiert das nicht, allerdings berechnet das Programm nun keine Kommastellen mehr.

Der Code für die 3 Textboxen sieht derzeit so aus:


Private Sub TextBox8_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 TextBox8.Value = Format(TextBox8.Value, "0.00")
End Sub

Private Sub TextBox8_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)


If InStr("1234567890," & Chr$(8), Chr$(KeyAscii)) = 0 Then
  KeyAscii = 0
End If
If KeyAscii = Asc(".") Then
   KeyAscii = Asc(",")
End If
 
If InStr(1, TextBox8.Value, ",", 0) And KeyAscii = Asc(".") Then
  KeyAscii = 0
End If

End Sub


Nun brauche ich wieder Hilfe, wie ich den Code verändern muss, dass die Summe korrekt berechnet und angezeigt wird?

Vielen Dank schon mal

Kulis_de
Antworten Top
#6
Hallo,

Val schneidet alles ab, was nach dem Komma kommt. Versuche es mal so:


Code:
Private Sub TextBox8_Change()
TextBox9.Value = CSng(TextBox8.Value) * CSng(TextBox7.Value)
End Sub
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top


Gehe zu:


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