Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
632to636
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
632to636
632to636
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Kontrolle der Eingabe in Textbox
10.07.2005 01:04:42
Jens
Hallo Leute,
hab ein kleines Problem mit einer Textbox, in der nur ganze Zahlen bis 50 eingegeben werden dürfen.
In TextBox1_KeyPress überprüfe ich, ob z.B. ein Buchstabe eingegeben wird - diese Kontrolle haut auch hin.
In TextBox1_AfterUpdate will ich nun überprüfen, ob eine Zahl größer 50 eingegeben wurde, in diesem Fall soll der Inhalt der Textbox markiert werden, und dann überschrieben werden, sobald wieder eine Zifferntaste gedrückt wird. Das versuche ich mit folgendem Code:

Private Sub TextBox1_AfterUpdate()
With Me.TextBox1
If Not IsEmpty(Me.TextBox1) And Not .Value = "" Then
If Int(.Value) > 50 Then
MsgBox "Hier sind nur Zahlen bis 50 zulässig.", vbInformation
.EnterFieldBehavior = fmEnterFieldBehaviorSelectAll
.SetFocus
End If
End If
End With
End Sub

Das Ganze funktioniert aber nicht: die MsgBox erscheint zwar, aber es wird kein Text in der Textbox ausgewählt, auch .SetFocus tut anscheinend nichts...
Bitte um Tipps - bin nach längerem googeln und Durchsuchen der VBA-Hilfe am Ende meiner Ideen...
Danke und liebe Grüße,
Jens

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kontrolle der Eingabe in Textbox
10.07.2005 02:02:18
chris
Hallo Jens, ich hoffe ich kann dir damit helfen.
So wie ich es verstanden habe müsste es Dir weiterhelfen.

Private Sub TextBox1_Change()
If TextBox1.Value > 50 Then
TextBox1.Text = ("Neuer Text weil größer")
MsgBox ("größer")
Else
End If
End Sub

grüße Christian
AW: Kontrolle der Eingabe in Textbox
10.07.2005 03:10:21
PeterW
Hallo Christian,
kannst du mal erklären, was der Else-Teil in deinem Code bewirken soll - den verstehe ich nicht.
Danke und Gruß
Peter
AW: Kontrolle der Eingabe in Textbox
10.07.2005 03:15:41
chris
Also der bewirkt nichts.
Sollte mann sehen das da nichts dazu steht.
Habe in nur eingebaut damit er evtl. die möglcihkeit nutzen kann wenn er will.
Und zweitens zu deiner Antwort oben die ist ja wohl nicht ganz klar für mich.
Hast du meine Antwort und meine File nicht gesehen ? Also ist es doch möglich ohne VBA und auch ohne größeren Aufwand. Also bitte halte dich zurück mit solchen Postings.
Würde das Forum sicher begrüßen wenn nicht alles mögliche als unmöglich abgetan wird.
grüße Christian
Anzeige
AW: Kontrolle der Eingabe in Textbox
10.07.2005 03:35:03
PeterW
Sorry Christian,
wollte dir nicht auf den Schlips treten. Warum jemand, der angibt "VBA nein" in einen Else-Teil etwas einbauen kann ist nicht nachvollziehbar.
Und was den anderen Thread angeht: dort dürftest du mit etwas Wohlwollen akzeptieren, dass meine Antwort fast zeitgleich war.
Ein Hinweis sei gestattet: ein Forum lebt von der Vielfalt. Warum sollte ich meinen Senf für mich behalten, wenn ich das passende Würstchen zum Senf anbieten kann? Bei MS führen bekanntlich immer viele Wege zum Ziel. Überlassen wir es doch den Fragestellern zu entscheiden, welchen Weg sie gehen wollen.
Danke und Gruß
Peter
Anzeige
AW: Kontrolle der Eingabe in Textbox
10.07.2005 03:36:39
chris
Peter schau auch auf die uhr ! Und nehme das als Ausrede von mir an :)
Wollte dir auch nichts böses ! handreich !!!!
AW: Kontrolle der Eingabe in Textbox
10.07.2005 03:15:52
Jens
Hallo Christian,
danke für deine rasche Hilfe!
Deine sub macht aber auch nicht ganz das, was ich mir wünsche. Ich möchte eigentlich, dass nach Eingabe eines Wertes größer als 50 der Fokus auf das Textfeld gesetzt wird und der Inhalt des Textfeldes markiert.
Anschließend soll bei Eingabe einer Taste der bisherige Inhalt überschrieben werden - wie man es eben von Windows gewohnt ist.
LG,
Jens
AW: Kontrolle der Eingabe in Textbox
10.07.2005 03:37:28
chris
sags doch gleich :)
Kein problem.

Private Sub TextBox1_Change()
If TextBox1.Value > 50 Then
' ("größer")
SendKeys "^{a}", True
Else
' ("kleiner")
End If
End Sub

Klappts ?
grüße chris ich hoffe es klappt Rückmeldung wäre nett !
Anzeige
AW: Kontrolle der Eingabe in Textbox
10.07.2005 06:09:39
Nepumuk
Hi,
du kannst doch schon abfangen, dass der User überhaupt einen größeren Wert als 50 eingibt. Ich weiß jetzt nur nicht, ob Nachkommastellen zulässig sind. Aber so geht's für ganze Zahlen:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case 48 To 57
            With TextBox1
                If .TextLength = 0 Then
                    If KeyAscii > 53 Or KeyAscii = 48 Then KeyAscii = 0
                ElseIf .TextLength = 1 Then
                    If Val(.Value) = 5 And KeyAscii <> 48 Then KeyAscii = 0
                Else
                    KeyAscii = 0
                End If
            End With
        Case Else
            KeyAscii = 0
    End Select
End Sub

Das andere geht auch ohne Sendkeys:
Private Sub TextBox1_Change()
    With TextBox1
        If .TextLength <> 0 And Not IsNumeric(.Text) Or Val(.Value) > 50 Then
            .SelStart = 0
            .SelLength = .TextLength
            MsgBox "Nur Werte kleiner gleich 50 zulässig.", 48, "Hinweis"
        End If
    End With
End Sub

Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: Kontrolle der Eingabe in Textbox
10.07.2005 08:03:59
Jens
Hallo chris b, Peter W und Nepumuk,
zu meinem Erstaunen hab ich ja doch noch mitten in der Nacht einige Antworten bekommen!
Inzwischen hab ich auch selbst ein bisschen rumexperimentiert und herausgefunden (wie ihr auch schreibt), dass mein ursprünglicher Code problemlos funktioniert, wenn ich nur Change statt AfterUpdate abfrage... Ich blick nicht ganz durch, aber der Code funktioniert.
Dafür ist inzwischen an anderer Stelle - mit Pfadangaben - eine Frage aufgetaucht
...siehe dazu ein eigenes Posting, da anderes Thema.
Nochmal vielen Dank für die Hilfe an euch drei!
Jens
Anzeige
AW: Kontrolle der Eingabe in Textbox
10.07.2005 16:45:35
chris
Hallo Nepumuk,
ich bins der Chris, wollte dich bitte mir deinen Code zu erklären.Ich komm nicht drauf wie er Arbeitet auch den befehl kenne ich nicht.KeyAscii
Ist glaub ich gar kein Offizieller oder ? Würde mich freuen wenn du da etwas licht ins dunkel bringen könntest wie der Code funktioniert.
Vielen Dank Christian
AW: Kontrolle der Eingabe in Textbox
10.07.2005 17:15:21
Nepumuk
Hallo Chris,
Vorausgesetzt: Es können nur ganze Zahlen von 1 bis 50 eingegeben werden!!
Das KeyPress - Ereignis ist ein Standardereignis aller Steuerelemente aus der FM20.dll incl. der Userform selbst. KeyAscii ist dessen Übergabeparameter und gibt wie der Name schon sagt den Asciicode der gedrückten Taste zurück. Die Asciicodes 48 bis 57 entsprechen den Zahlen 0 bis 9.
Select Case KeyAscii
Case 48 To 57
Die TextLength - Eigenschaft der Textbox gibt die Anzahl der Zeichen zurück, die sich in der Textbox befinden. Sind noch keine Zeichen drin,
If .TextLength = 0 Then
muss das erste Zeichen kleiner gleich 5 aber größer 0 sein:
If KeyAscii &gt 53 Or KeyAscii = 48 Then KeyAscii = 0
Wird Keyascii auf 0 gesetzt, wird kein Zeichen ausgegeben. Ist schon ein Zeichen in der Textbox,
ElseIf .TextLength = 1 Then
und das erste Zeichen ist eine 5,
If Val(.Value) = 5 And KeyAscii 48 Then KeyAscii = 0
dann kann das zweite Zeichen nur eine 0 sein. Sind schon zwei Zeichen in der Textbox,
Else
kann kein weiteres Zeichen eingegeben werden.
KeyAscii = 0
Wenn eine Taste gedrückt wird, die keine Zahl ausgibt, wird das Zeichen unterdrückt.
Case Else
KeyAscii = 0
End Select
Jetz klarer?
Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: Kontrolle der Eingabe in Textbox
10.07.2005 20:10:38
chris
Hallo Nepumuk,
jetzt ist das ganze Glaßklar !!
Vielen dank echt super Erklärung !!!!!!!
Jetzt weiß ich auch woher er sich das nimmt also das:
"Die Asciicodes 48 bis 57 entsprechen den Zahlen 0 bis 9."
Wenn ich mir die zeichensatztabelle in Axcel anschaue da stehen die drinn !!
Vielen Dank !!!

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige