Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1600to1604
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Seltsamer Vorfall

Seltsamer Vorfall
17.01.2018 10:33:51
D.H.
Hallo Leute,
ich habe folgendes Problem und wäre über eine Erleuchtung durch euch Profis sehr dankbar:
Ich habe in einer Userform diverse Textboxen, die ich mit folgenden Code (Beispielcode, aber grundsatzlich identisch bei allen Textboxen) auf Zahlen mit oder ohne Komma begrenze:
Private Sub TextBox12_Change()
ActiveSheet.Cells(116, 3).Value = TextBox12.Value
End Sub
Private Sub TextBox12_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'Zahlen von 0-9 zulä _
ssig
If Chr(KeyAscii) Like "[0-9]" And 44 = False Then KeyAscii = 0
End Sub
Bei einigen Textboxen funktioniert dies tadellos, bei anderen widerum nicht.
Wenn es nicht funktioniert wird bei der Passage "If Chr(KeyAscii) Like "[0-9]" And 44 = False Then KeyAscii = 0" zwar die Prüfung richtig durchgefüht (false = false), jedoch springt er dann nicht in die Then-Ausführung sondern sofort in den End Sub.
Bei den Textboxen wo es funtioniert, wird dies wie erwartet ausgeführt.
Kann es mir absolut nicht erklären. Weiss einer Rat?
Grüße Danilo

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Seltsamer Vorfall
17.01.2018 10:53:51
Daniel
Hi
du hast in deiner IF-Prüfung 2 Teilprüfungen:
1. Chr(KeyAscii) Like "[0-9]"
2. 44 = False
diese sind mit UND verkettet
da die zweite Prüfung 44=False immer das Ergebnis FALSE hat, ist auch das Gesamtergebnis immer FALSE und der Teil nach dem THEN wird niemals ausgeführt.
das "44=False" ist also kompletter Quatsch.
wenn du in deiner TextBox nur Zahlen mit Komma eingeben können willst, müsste die Prüfung so aussehen:
If Chr(KeyAscii) Like "[0-9]" then
'nichts machen
ElseIf Chr(KeyAscii) = ",") Then
if Instr(Textbox12.Text, ",") > 0 then KeyAscii = 0
Else
KeyAscii = 0
end if

Die Unterscheidung zwischen Komma und Ziffer ist notwendig, da das Komma ja nur 1x eingegeben werden darf. Ein zweites Komma ist bei Eingabe einer Zahl nicht mehr zulässig.
bei Zahlen ohne Komma dann entsprechend einfacher:
If not Chr(KeyAscii) Like "[0-9]" then KeyAscii = 0
beachte, dass KeyAscii = 0 ausgeführt werden muss, wenn die Eingabe KEINE Ziffer ist.
Gruß Daniel
Anzeige
AW: Seltsamer Vorfall
17.01.2018 11:07:18
D.H.
Hallo Daniel,
ich habe mal weiter getestet und du hast recht, die Prüfung 44 = false ist quatsch.
Ich hatte bisher nur geprüft, ob die Kommas angenommen werden aber nie anderen Eingaben getestet.
Bei fehlender Prüfung auf 44 = false funktioniert es allerding richtig.
Deine Cdoebeispiel (If not Chr(KeyAscii) Like "[0-9]" then KeyAscii = 0) ist ja quasi die Negation von meiner (If Chr(KeyAscii) Like "[0-9]" = False Then KeyAscii = 0).
Vielen Dank, das du mich aus dem Wald geholt hast den ich vor lauter Bäumen nicht gesehen habe :)
AW: Seltsamer Vorfall
17.01.2018 11:00:53
UweD
Hallo
44 =false liefert immer ein False.
so klappt es aber
If Not Chr(KeyAscii) Like "[0-9]" And Not KeyAscii = 44 Then KeyAscii = 0

LG uweD
Anzeige
AW: Seltsamer Vorfall
17.01.2018 11:09:48
D.H.
Die Lösung gefällt mir persönlich fast noch besser, ich schaue mal ob damit die mehrfache Kommanutzung die Daniel angeführt hat ausgesschlossen ist.
AW: Seltsamer Vorfall
17.01.2018 11:16:14
D.H.
Leider sind doppelte Komma weiterhin möglich. Das würde ich noch gerne verhindern wollen.
AW: Seltsamer Vorfall
17.01.2018 11:22:48
Daniel
Hi
ich würde hier der Übersichtlichkeit wegen mit Select Case arbeiten:
Select Case KeyAscii
Case Asc("0") to Asc("9") 'Ziffern immer übernehmen
Case Asc(",") 'bei komma prüfen, ob Komma schon vorhanden
if Instr(Textbox12.Text, ",") > 0 Then KeyAscii = 0
Case Else 'alle anderen Eingaben ignorieren
KeyAscii = 0
End Select
Gruß Daniel
Anzeige
AW: Seltsamer Vorfall
17.01.2018 11:39:00
D.H.
Der Codeteil
if Instr(Textbox12.Text, ",") > 0 Then KeyAscii = 0
funktioniert nicht.
Der fett markierte Teil ergibt irgendwie immer 0, egal wieviele Komma ich eingebe.
AW: Seltsamer Vorfall
17.01.2018 11:41:55
D.H.
Vergiss es, falsches Textboxindize genutzt, fehler liegt beim anwender ^^

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige