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
Code im Modul ablegen und in UF aufrufen
18.01.2018 20:38:42
Naki
Hallo,
ich habe ein Programm mit mehreren UserFormen und in den UF´s sind mehrere Textboxen.
In einigen Textboxen will ich mit folgenden Code verhindern, dass ausser Momma und Zahlen nichts eingegeben wird:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)()
' Das Makro verhindert die Eingabe von Buchstaben
' in einer TextBox, indem die Tastatur
' dauernd abgefragt wird. Nur Komma und Punkt sind erlaubt.
Select Case KeyAscii
' 0 - 9
Case 48 To 57
' Komma
Case 44
' Punkt
Case 46
Case Else
Beep
KeyAscii = 0
MsgBox String(5, 32) & "Hier dürfen nur Zahlen eingegeben werden. ", -8
End Select
End Sub

Das funktioniert auch! Muss aber den ganzen Code für jede Textbox wiedeholen.
Meine Frage:
Kann ich diesen Code in einem Modul ablegen und von dort aus mit einem kürzeren Code für das jeweilige Textbox aufrufen? (Ich hoffe, ich konnte mein vorhaben deutlich formulieren!)
PS: Wenn ja,Ist es möglich dies auch mit diversen Formatierungen zu machen?
Vielen Dank im Voraus un Gruß
Naki

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code im Modul ablegen und in UF aufrufen
18.01.2018 21:00:50
Werner
Hallo Naki,
folgender Code in ein allgemeines Modul:
Public Sub Eingabe(ByVal KeyAscii As MSForms.ReturnInteger)
' Das Makro verhindert die Eingabe von Buchstaben
' in einer TextBox, indem die Tastatur
' dauernd abgefragt wird. Nur Komma und Punkt sind erlaubt.
Select Case KeyAscii
' 0 - 9
Case 48 To 57
' Komma
Case 44
' Punkt
Case 46
Case Else
Beep
KeyAscii = 0
MsgBox String(5, 32) & "Hier dürfen nur Zahlen eingegeben werden. ", -8
End Select
End Sub
Im Key_Press der verschiedenen Textboxen dann:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Call Eingabe(KeyAscii)
End Sub
Gruß Werner
Anzeige
AW: Code im Modul ablegen und in UF aufrufen
18.01.2018 22:03:22
Peter(silie)
Hallo,
mache es bitte nicht wie Werner vorgeschlagen hat.
Erstelle ein Klassenmodul mit einem griffigen Namen, z.B. "InputRestrictions"
Dort schreibst du folgendes rein:
(hier eine Test datei: https://www.herber.de/bbs/user/119090.xlsm )
Option Explicit
Public WithEvents clsNumberLimitedTextbox As MSForms.TextBox
Private Sub clsNumberLimitedTextbox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case 44, 46
Case Else: KeyAscii = 0
End Select
End Sub
In dein Initialize Event der Userform kannst du dann folgendes schreiben:
Option Explicit
Option Base 1
Private restrictedObject() As InputRestrictions
Private Sub UserForm_Initialize()
'Ohne Loop
ReDim restrictedObject(2)
Set restrictedObject(1) = New InputRestrictions
Set restrictedObject(2) = New InputRestrictions
Set restrictedObject(1).clsNumberLimitedTextbox = Me.TextBox1
Set restrictedObject(2).clsNumberLimitedTextbox = Me.TextBox2
'mit Loop
Dim i As Long
ReDim restrictedObject(2)
For i = LBound(restrictedObject) To UBound(restrictedObject)
Set restrictedObject(i) = New InputRestrictions
Set restrictedObject(i).clsNumberLimitedTextbox = Me.Controls("TextBox" & i)
Next i
End Sub

EventHandler die du auf viele Objekte setzen willst, immer in einer Klasse nieder schreiben!
Von einem Beep sub rate ich ebenfalls ab, der Anwender merkt früh genug dass er
nur Zahlen eintippen kann und für Hinweise von Eigenschaften eines Objektes ist
der ControlTipText geeignet.
Wenn du per Label oder generell durch das design klar machst, dass dort nur Zahlen reinkommen,
dann brauchst du keinen Ton der es verdeutlicht.
Die meisten User haben sowie in der Arbeit den Ton aus.
Anzeige
AW: Code im Modul ablegen und in UF aufrufen
19.01.2018 07:52:44
fcs
Hallo Naki,
hier eine kleine Beispiel-Datei für Pberwachung der Tastatur-Eingabe und formatieren der Eingabe in Textboxen.
https://www.herber.de/bbs/user/119094.xlsm
Das Formatieren wird dabei über das Exit-Ereignis der Textboxen gesteuert, d.h. beim Verlassen wird der Textbox-Inhalt geprüft und formatiert.
Gruß
Franz
AW: Code im Modul ablegen und in UF aufrufen
19.01.2018 10:05:00
Naki
Hallo,
nochmals Danke für die Rückmeldungen!
Schönes WE, Naki

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige