Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1680to1684
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
Textfeld in Form mit nur Zahlen
20.03.2019 10:24:11
Martin
Hi Leute,
hab wiedermal eine Frage.
ich starte ein Formular in dem es ein Textfeld gibt. Dort dürfen nur 8 Zahlen geschrieben werden. Es müssen auch genau die 8 Zahlen sein.
Wenn ich mit Enter/Tab/Space bestätige und es genau 8 Zahlen sind, soll mein Code ausgeführt werden.
Prinzipiell hab ich das auch fast geschafft.
Das Problem ist nun, dass es sein kann, dass die Zahl aus einem anderen Programm kopiert wurde und in das Feld eingefügt werden soll. Ich scheitere nun am Strg+V (Rechte Maustaste einfügen wäre cool, muss aber nicht sein)
Ein weiteres Problem ist auch, dass die kopierte Zahl einen Punkt beinhalten kann wie z.B.: 1234.5678
Dieser Punkt darf nicht in das Textfeld übertragen werden.
Mein Code sieht im Moment so aus:
Private Sub txfNummer_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 48 To 57, 96 To 105
Case vbKeyTab, vbKeyReturn, vbKeySpace
KeyCode = 0
MsgBox (txfNummer.Value)
' Makro wird ausgeführt
Case Else
KeyCode = 0
End Select
End Sub
Hab ihr hier vielleicht wieder eine Lösung für mich?
Danke schonmal im Voraus!
Martin

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textfeld in Form mit nur Zahlen
20.03.2019 14:47:26
Werner
Hallo Martin,
versuch mal:
Private Sub txfNummer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.txfNummer  "" Then
Me.txfNummer = Replace(Me.txfNummer, ".", "")
End If
If Me.txfNummer  "" Then
If Len(Me.txfNummer) = 8 Then
'statt Messagebox hier dann dein Makro
MsgBox "alles gut"
Else
Cancel = True
Me.txfNummer.SelStart = 0
Me.txfNummer.SelLength = Len(Me.txfNummer)
MsgBox "nicht 8-stellig"
End If
End If
End Sub
Private Sub txfNummer_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 8, 9, 13, 37, 39, 46, 48 To 57, 96 To 105
Case Else
KeyCode = 0
End Select
End Sub
Gruß Werner
Anzeige
AW: Textfeld in Form mit nur Zahlen
20.03.2019 14:47:46
Torsten
Also diese Pruefung wuerde ich beim Veraendern der Textbox machen (txfNummer_Change). Ich nehme an, dass du meinst, dass die Zahl haendisch eingefuegt wird mit Strg+V.
Z.B.:

Dim sText As String
sText = txfNummer.Value                       'Zahl in String schreiben
sText = sText.Replace(".", "")                'Punkt entfernen
txfNummer.Value = sText                       'wieder in die Textbox schreiben
txfNummer = Format(txfNummer, "########")     'wieder ne Zahl draus machen
Gruss Torsten
AW: Textfeld in Form mit nur Zahlen
20.03.2019 17:37:33
Martin
Hi Werner, hi Torsten!
Danke für eure Hilfe! Ich habs mit euren Makros zwar nicht zum Laufen gebracht, aber sie haben mir trotzdem sehr weitergeholfen. Ich hab jetzt mit einer Mischung aus allem folgenden Code gebastelt:
Private Sub txfNummer_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Const SHIFT_MASK = 1
Const CTRL_MASK = 2
Const ALT_MASK = 4
Dim zwischenablage As String
Dim objData As New DataObject
Dim sNummer As String
Dim chars As Integer
Dim char As String
objData.GetFromClipboard
zwischenablage = objData.GetText
If KeyCode = vbKeyV Then
If Shift = CTRL_MASK Then
If Len(zwischenablage)  0 Then
For chars = 1 To Len(zwischenablage)
char = Mid(zwischenablage, chars, 1)
If IsNumeric(char) Then
sNummer = sNummer & char
End If
Next chars
End If
If Len(sNummer) = 8 Then
' Makro ausführen
MsgBox ("Einfügen OK)
End If
Else
KeyCode = 0
End If
txfNummer.Value = sNummer
Else
Select Case KeyCode
Case 8, 46, 37, 39 ' Löschen, Pfeiltasten
Case 48 To 57, 96 To 105 ' Zahlen
Case vbKeyTab, vbKeyReturn, vbKeySpace
KeyCode = 0
sNummer = txfNummer.Value
If Len(sNummer)  8 Then
Cancel = True
Me.txfNummer.SelStart = 0
Me.txfNummer.SelLength = Len(Me.txfNummer)
MsgBox "nicht 8-stellig"
Else
' Makro ausführen
MsgBox ("Eingabe OK)
End If
End Select
End If
End Sub
Er macht mal das was er machen soll. Zudem wollte ich sicherheitshalber alle anderen Zeichen ausser Zahlen ausschließen.
Seht ihr da was das vielleicht doch mal einen Fehler auswirft den ich jetzt noch nicht sehe?
Danke nochmal an euch beide und
Liebe Grüße
Martin
Anzeige

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige