Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1232to1236
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

Keyascii Befehl

Keyascii Befehl
Sascha
Hallo Experten,
Für meine Textbox in einer UF habe ich folgendes deklariert:

Private Sub TB2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'nur Zahlen eingeben. Text verboten
Select Case KeyAscii
Case 8, 9, 48 To 57 'Backspace, Tab, 0 bis 9
If InStr(1, TB2, ".") > 0 Then
If Len(Mid(TB2, InStr(1, TB2, ".") + 1)) > 0 Then KeyAscii = 0 'Nur 1 Stelle  _
nach dem Komma
End If
Case 46 'Punkt 44 = Komma
If InStr(1, TB2.Text, Chr(46), vbTextCompare) > 0 Then
KeyAscii = 0
Beep
End If
Case Else
KeyAscii = 0
Beep
MsgBox String(5, 32) & "Hier dürfen nur Zahlen eingegeben werden. ", -8
End Select
End Sub

Nun muss ich wenn bereits ein Wert in diese Textbox eingelesen wurde, um den Wert zu ändern, diesen markieren und mit der DEL - Tase löschen, damit ich den Wert ändern kann.
Ich möchte gerne mit der Maus den Wert markieren und direkt darüberschreiben können.
Ist das möglich?
Liebe Grüsse
Sascha

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Keyascii Befehl
16.10.2011 16:28:30
Daniel
Hi
das ist schon möglich.
allerdings nicht, wenn du schon eine Nachkommazahl hast, weil dann durch die Prüfung jede weiter Eingabe blockiert wird.
Hier ist deine Prüfung zu sensibel.
Auch wenn bereits eine Nachkommazahl vorhanden ist, muss die Eingabe erlaubt sein, wenn:
a) mindestens 1 Zeichen zum Überschreiben markiert ist, das kannst du mit TB2.SelLength = 0 abfragen.
b) sich die Einfügemarkierung vor dem Dezimalpunkt befindet, die Position kannst du mit TB2.SelPos abfragen und mit der Position des Dezimalpunkts vergleichen.
wenn du diese Prüfungen noch entsprechend einbaust, dann kannst du auch Ziffern einfügen und überschreiben.
Das funktioniert ja auch jetzt schon, solange du keinen Dezimalpunkt eingibst.
Gruß Daniel
Anzeige
AW: Keyascii Befehl
16.10.2011 16:48:06
Sascha
Hallo Daniel,
Danke für Deine Antwort.
Nur weis ich nicht wie ich diese Abfragen einbinden kann.
Kannst Du mir dabei helfen?
LG Sascha
AW: Keyascii Befehl
16.10.2011 16:52:33
Daniel
Hi
von wem ist denn der Code?
von dir oder hast du ihn irgendwo kopiert und abgeschrieben, oder von einem Vorgänger übernommen?
wenn er nicht von dir ist, wieviel verstehts du von dem Code und was verstehts du nicht?
Gruß Daniel
AW: Keyascii Befehl
16.10.2011 17:14:41
Sascha
Hallo Daniel,
Ich habe den Code von 2 verschiedenen Personen erhalten, resp. zusammengeführt.
Ich weiss schon mal was die Cases bedeuten, steht ja auch dahinter welche Zahl wofür steht...
Habe auch im Netz nach diesen Deklarationen gesucht und gefunden, aber leider nichts für mein Problem...
Gruss Sascha
Anzeige
AW: Keyascii Befehl
16.10.2011 17:06:38
Daniel
Hi
ok machen wir es einfach:

If InStr(1, TB2, ".") > 0 Then
If TB2.SelLenght = 0 Then
If TB2.SelPos > Instr(1, TB2, ".")
If Len(Mid(TB2, InStr(1, TB2, ".") + 1)) > 0
Then KeyAscii = 0 'Nur 1 Stelle  nach dem Komma
End If
End If
End If
End If
Gruß Daniel
AW: Keyascii Befehl
16.10.2011 17:28:03
Sascha
Hallo Daniel,
Danke :-)
Bekomme Methode oder Datenobjekt nicht gefunden...
Ich muss die beiden Befehle "SelLength" und "SelPos" noch deklarieren, aber wie und als was?
Sascha
AW: Keyascii Befehl
16.10.2011 17:40:37
Daniel
Hi
nö eigentlich nicht.
Ok es muss heißen SelStart und nicht SelPos.
hier der vollständige getestete Code:

Private Sub TB2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'nur Zahlen eingeben. Text verboten
Select Case KeyAscii
Case 8, 9, 48 To 57 'Backspace, Tab, 0 bis 9
If InStr(1, TB2, ".") > 0 Then
If TB2.SelLength = 0 Then
If TB2.SelStart > InStr(1, TB2, ".") Then
If Len(Mid(TB2, InStr(1, TB2, ".") + 1)) > 0 Then
KeyAscii = 0
End If
End If
End If
End If
Case 46 'Punkt 44 = Komma
If InStr(1, TB2.Text, Chr(46), vbTextCompare) > 0 Then
KeyAscii = 0
Beep
End If
Case Else
KeyAscii = 0
Beep
MsgBox String(5, 32) & "Hier dürfen nur Zahlen eingegeben werden. ", -8
End Select
End Sub
Gruß Danieo
Anzeige
AW: Keyascii Befehl
16.10.2011 18:36:00
Sascha
Perfekt... :-))
Vielen lieben Dank und schönen Abend
LG sascha
AW: Keyascii Befehl
16.10.2011 20:40:03
Sascha
Hallo Tino,
Wow, coole Lösung... :-)
Werde diese noch implementieren...
Danke vielmals...
Gruss Sascha

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige