30.05.2017, 12:38
Seiten: 1 2
30.05.2017, 13:53
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.
Da mit dem Code gewisse Felder bereits vorerfasst werden, wird der Fehler ausgelöst, da es die Einstellung des Excel nicht zulässt.
30.05.2017, 16:49
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
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
30.05.2017, 17:34
Moin Gast!
Hast Du mein #5 gelesen?
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
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
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
30.05.2017, 19:42
Hallo Ralf
nehme deine Antwort zur Kenntnis.
mfg Gast 123
nehme deine Antwort zur Kenntnis.
mfg Gast 123
31.05.2017, 09:23
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?
Danke
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
31.05.2017, 09:43
Hallo Renato,
Das lassen wir mal so im Raum stehen ;)
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.
Hier sind allerdings auch keine weiteren Fehler in der Überprüfung, da ich deine Datei nicht kenne.
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.
(31.05.2017, 09: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, 09: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, 09: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.
Seiten: 1 2