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.

Bug13/bei Makro
#11
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)
Antworten Top
#12
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.
Antworten Top
#13
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
Antworten Top
#14
Moin Gast!
Hast Du mein #5 gelesen?
  1. Das Change-Ereignis macht hier keinen Sinn
  2. 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)
Antworten Top
#15
Hallo Ralf

nehme deine Antwort zur Kenntnis.

mfg Gast 123
Antworten Top
#16
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
Antworten Top
#17
Hallo Renato,

(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.
Gruß Jonas
[-] Folgende(r) 1 Nutzer sagt Danke an Jonas0806 für diesen Beitrag:
  • Reniiii
Antworten Top


Gehe zu:


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