PDA

Vollständige Version anzeigen : trotz Haltepunkt function wird einmal ausgeführt


Die_Schwenimaus
09.09.2011, 11:12
Präfix falsch, sollte VBA sein,Sven

Guten Tag zusammen,

Ich habe folgendes Problem.:
Die Eingabe in einem Textfeld soll während der Eingabe überprüft werden ob es sich um eine Zahl handelt und bei false gelöscht werden.
Um die function zu prüfen habe ich einen Haltepunkt in die Zeile "Private Sub Auststk2_Change()" gesetzt, trotzdem wird die function einmal ausgeführt und erst dann stoppt der Ablauf.
Nun meine Fragen:
Weshalb stoppt die Prozedur nicht bevor die function das erste mal aufgerufen wird?
Weshalb läuft die function zweimal durch, obwohl sie nur einmal aufgerufen wird?

Danke für Eure Hilfe
Sven

Private Sub Auststk2_Change()
If eingabecheckzahl(Auststk2) = True Then Austp2 = Auststk2 * Austp2
End Sub

Function eingabecheckzahl(eingabe)
y = eingabe
If y <> "" And Not IsNumeric(y) And Not y = "-" Then
MsgBox "Bitte gültigen Zahlenwert eingeben !"
Auststk2 = ""
eingabecheckzahl = False
Else
eingabecheckzahl = True
End If
End Function

FW
09.09.2011, 12:02
... woher weißt Du, dass die Funktion einmal ausgeführt wurde?

chris-kaiser
09.09.2011, 12:07
Hi

Weshalb läuft die function zweimal durch, obwohl sie nur einmal aufgerufen wird?

ohmm, weil du Change verwendest!
dann läuft halt das ganze bei Falscheingabe mit "" nochmal durch.

Du änderst ja den Texteintrag und dann greift change natürlich wieder, deshalb läuft das zweimal...

Die_Schwenimaus
12.09.2011, 09:14
@ Chris, danke für die Entfernung des Brettes vor meinem Kopf. Habe den Code wie folgt geändert, er funktioniert. Mich stört trotzdem das mehrmalige durchlaufen der Auststk2_Change. Mir ist kein Alternativansatz zur Eingabeprüfung bei Eingabe/ in Echtzeit eingefallen.

@ FW, die Msgbox ging auf, auststk2 wurde gelöscht und dann stoppte Excel am Haltepunkt. Der gepostete Code verhält sich nicht so, es ist für mich nicht nachvollziehbar, durch welche Masnahme ich das abstellen konnte.
Ich bastle noch mal, um das Verhalten zu zeigen.

Gibt es eine Möglichkeit die Zeile "Auststk2 = """ variabel zu gestallten, für alle Auststn?
Habe mir folgendes gedacht in der Change sub, Ort = Auststk2 und dann in der Eingabecheckzahl, Ort="".

Danke Euch beiden,
Für Ideen/Alternativen bin ich jederzeit offen
Gruß
Sven

Private Sub Auststk2_Change()
If Eingabecheckzahl(Auststk2) = True And Not Auststk2 = "" Then Austp2 = Auststk2 * Austp2
End Sub
Function Eingabecheckzahl(eingabe) As Boolean
y = eingabe
If y <> "" And Not IsNumeric(y) And Not y = "-" Then
MsgBox "Bitte gültigen Zahlenwert eingeben !"
Auststk2 = ""
Eingabecheckzahl = False

Else
Eingabecheckzahl = True
End If
End Function