Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
Sorry!
Ich sehe gerade, dass *ohneName* Renato heißt.
Mea culpa,
Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 11.11.2016
Version(en): 2010
hab den fehler gefunden...auf meinem Laptop habe ich die Grundeinstellung, dass auch ein Komma für die Berechnung gemacht werden kann. im Geschäft ist diese Einstellung nicht so.
Da mit dem Code gewisse Felder bereits vorerfasst werden, wird der Fehler ausgelöst, da es die Einstellung des Excel nicht zulässt.
Registriert seit: 12.03.2016
Version(en): Excel 2003/ 2016
Hallo
das Excel in einen Fehler hineinlaeuft kann man nicht immer verhindern, es gibt aber verschiedene Möglichkeiten Fehlermeldungen abzufangen und zu bearbeiten. Mit den Befehlen: "On Error Resume Next" oder "On Error GoTo Fehler"
Das kann ein komplettes ignorieren des Fehlers sein, -ohne Fehlermeldung-. Oder eine MsgBox Fehlermeldung. Oder den Fehler über eine InputBox abfangen zur manuellen Korrektur. Anbei drei Beispiele als Demo.
mfg Gast 123
Code:
Sub txt3Säule_Change()
With Worksheets("Tool")
On Error Resume Next
'** ignoriert Fehler, -keine Fehlermeldung- !!
txt3Säule = "asd" 'extra Fehler Zahl als Text !!
.Range("B73") = CDbl(txt3Säule)
End With
End Sub
Sub txt3Säule_Change_2()
With Worksheets("Tool")
On Error Resume Next
txt3Säule = "asd" 'extra Fehler Zahl als Text !!
.Range("B73") = CDbl(txt3Säule)
'** Sprung zur Fehlerzelle und/oder MsgBox Fehlermeldung
'If Err > 0 Then .Range("B73").Select 'Zelle anspringen
If Err > 0 Then MsgBox txt3Säule & " Fehler b73"
End With
End Sub
Sub txt3Säule_Change_3()
Dim Eingabe As Double
With Worksheets("Tool")
On Error GoTo Fehler
txt3Säule = "asd" 'extra Fehler Zahl als Text !!
.Range("B73") = CDbl(txt3Säule)
Exit Sub
'** Fehlerbearbeitung über InputBox
Fehler: 'Code bei Fehler mit InputBox
Eingabe = InputBox("Eingabe B73", , txt3Säule)
If Eingabe = Empty Then Exit Sub
.Range("B73") = CDbl(Eingabe)
End With
End Sub
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
Moin Gast!
Hast Du mein #5 gelesen?
- Das Change-Ereignis macht hier keinen Sinn
- Die einzig sinnvolle Variante, den Fehler auszuschließen, ist
Code:
If IsNumeric(TextBox) Then CDbl(Textbox) Else MsgBox
Natürlich funktioniert auch On Error
Allerdings reagiert dies bei
jedem Fehler!
Also auch, wenn ich bspw. in eine geschützte Tabelle schreiben will.
Daher sollte Code immer so geschrieben werden, dass
erwartete Fehler ausgeschlossen werden.
(Mal ganz davon abgesehen, dass die Ursache beim TE ja ganz woanders zu finden war [englisches Excel mit anderem Dezimaltrennzeichen])
Two Cents
Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 12.03.2016
Version(en): Excel 2003/ 2016
Hallo Ralf
nehme deine Antwort zur Kenntnis.
mfg Gast 123
Registriert seit: 11.11.2016
Version(en): 2010
Hallo Ralf
Anscheinend hat sich das Excel über nacht entschiede, dass es heute auch mit dieser Excel Einstellung nicht mehr funktioniert. Gestern funktionierte es einwandfrei.
Kannst du mir kurz erklären, wo ich diesen Code in meinem Script einfügen muss...ist das bei jedem abschnitt...oder kann man dies generell für alle Felder einfügen?
Code:
If IsNumeric(TextBox) Then CDbl(Textbox) Else MsgBox
Danke
Registriert seit: 04.04.2017
Version(en): 2013
Hallo Renato,
(31.05.2017, 10:23)Reniiii schrieb: Anscheinend hat sich das Excel über nacht entschiede, dass es heute auch mit dieser Excel Einstellung nicht mehr funktioniert
Das lassen wir mal so im Raum stehen ;)
(31.05.2017, 10:23)Reniiii schrieb: Kannst du mir kurz erklären, wo ich diesen Code in meinem Script einfügen muss
Wie Ralf bereits sagte, gibt es verschiedene Möglichkeiten und "Zeitpunkte" diese Prüfung durchuzführen. z.B. beim Klick auf deinen Button (z.B. OK o.Ä.) so auch in meinem Beispiel.
Code:
Private Sub btnOK_Click()
If IsNumeric(Me.txtVerzinsungPK) Then
Worksheets("Tool").Range("B38") = CDbl(Me.txtVerzinsungPK)
Else
MsgBox "Bitte einen numerischen Wert für Verzinsung angeben", vbOKOnly + vbExclamation, "Fehleingabe"
Me.txtVerzinsungPK.Value = ""
End If
End Sub
Hier sind allerdings auch keine weiteren Fehler in der Überprüfung, da ich deine Datei nicht kenne.
(31.05.2017, 10:23)Reniiii schrieb: ...ist das bei jedem abschnitt...oder kann man dies generell für alle Felder einfügen?
Hierfür gibt es 2 vernünftige Ansätze, die erste, Klassenprogrammierung, dürfte deine Fähigkeiten überschreiten.
Die zweite Möglichkeit, ist die Textboxen in einer Schleife zu durchlaufen und zu prüfen.
Folgende(r) 1 Nutzer sagt Danke an Jonas0806 für diesen Beitrag:1 Nutzer sagt Danke an Jonas0806 für diesen Beitrag 28
• Reniiii