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

Code Problem

Code Problem
Peter
Hi Leute
ich hab hier einen Code für eine TextBox das wenn ich keine Zahlen eingebe die MsgBox erscheint. Das klappt auch alles. Jetzt habe ich aber in einer anderen TB schon einen Code und wenn ich da Buchstaben eingebe erscheint die Meldung erst wenn ich sie schließe sie müßte aber direkt erscheinen wenn ich keine Zahlen eingebe. Bitte um hilfe.
mfg Peter
Private Sub TextBox4_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox4.Text) = 0 Then Exit Sub
If Not IsNumeric(TextBox4.Text) Then
Beep
MsgBox "Nur Zahlen bitte!", vbExclamation
TextBox4.Text = ""
TextBox4.SetFocus
End If
With TextBox4
.Value = TextBox4.Value
If .Value = "" Then
ElseIf InStr(1, .Value, ".") = 0 Then
If Len(.Value) = 6 Or Len(.Value) = 8 Then
.Value = Left(.Value, 2) & "." & Mid(.Value, 3, 2) & "." & Mid(.Value, 5)
Else
.SetFocus
Cancel = True
.SelStart = 0
.SelLength = Len(.Value)
End If
End If
End With
End Sub

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

Betreff
Benutzer
Anzeige
AW: Code Problem
26.02.2010 13:34:52
IngGi
Hallo Peter,
lass' den Codeteil im With-Block wo er ist und lagere den Codeteil davor (in der If-Struktur) in ein Makro mit dem KeyPress-Ereignis aus. Mit der Anpassung bleiben auch die bisherigen (korrekten) Eingaben erhalten:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not IsNumeric(TextBox4.Text) Then
Beep
MsgBox "Nur Zahlen bitte!", vbExclamation
TextBox4.Text = Replace(TextBox4.Text, Chr(KeyAscii), "")
TextBox4.SetFocus
End If
End Sub
Die erste Zeile
If Len(TextBox4.Text) = 0 Then Exit Sub
ist überflüssig. Die kannst du einfach weglassen.
Gruß Ingolf
Anzeige
AW: Code Problem
26.02.2010 13:51:57
Luschi
Hallo Ingolf,
wenn Du Deinen Code mal testet, wirst Du feststellen, daß zwar die Meldung erscheint, der gedrü _ ckte Buchstabe aber nicht aus der Textbox gelöscht wird. Zum Zeitpunkt des Drückens der Taste gehört dieses Zeichen noch nicht zum Value-Wert der Textbox und kann nicht ersetzt werden. So klappt es bei mir:

Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57  'Zahlen 0 bis 9
Case Else
Beep
KeyAscii = 0
MsgBox "Nur Zahlen bitte!", vbExclamation
End Select
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Code Problem
27.02.2010 23:40:52
Peter
Hi Leute
ich hab etwas rumgedoktert mit der TextBox. Die meldung erfolgt sofort wenn ich keine Zahlen eintrage. Das ist ja korrekt. Wenn ich jetzt will ein Datum eingeben kann ich nur eine Zahl eingeben diese wird blau markiert und ich kann nix mehr eingeben nur wenn ich wieder mit dem curser in die textbox reinklicke kann ich wieder eine Zahl eingeben. Wie kann ich das ändern?
mfg Peter
https://www.herber.de/bbs/user/68274.xls
nur Datum in TextBox zulassen
28.02.2010 10:45:50
ChristianM
Hallo Peter,
Um die Eingabe in einer Textbox zu beschränken ist der Code von Luschi hier wohl der eleganteste. Du kannst zusätzlich noch den "Punkt" als Eingabe zulassen mit:
Case 46, 48 To 57 'Punkt und Ziffern.
statt:
Case 48 To 57 'Zahlen 0 bis 9
Das Problem ist jedoch, dass auch dann noch Eingaben wie zB 45.19.103 möglich sind. Hier müsstest du im Exit-Ereignis der Textbox prüfen, ob die Eingabe einem Datum entspricht. Das kann aber schon recht aufwendig werden.
Sinnvoller ist es statt der Textbox 3 ComboBoxes zu verwenden für die Auswahl von Tag, Monat und Jahr. So kennst du es bestimmt auch von div. Webseiten.
Alternativ kann man auch das Kalender-Steuerelement verwenden.
Gruß
Christian
Anzeige
AW: nur Datum in TextBox zulassen
28.02.2010 11:36:39
Peter
Hi Christian
ich hab das mit dem Punkt getestet. Klappt nicht. Kannst du mir helfen? Und könntest du mir mal ein Beispiel erstellen mit den 3 ComboBoxes?
mfg Peter
AW: nur Datum in TextBox zulassen
28.02.2010 12:53:53
ChristianM
Du musst den Namen der Textbox in Luschi's Code natürlich anpassen.
Ebenso den anderen Code, der die Textbox betrifft löschen bzw auskommentieren.

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 46, 48 To 57           'Punkt und Ziffern
Case Else: KeyAscii = 0
End Select
End Sub

Gruß
Christian
die Alternative mit ComboBoxes...
28.02.2010 13:24:46
ChristianM
... könnte im Ansatz so aussehen
- ersetze den kompletten Code im Userform durch den unten stehenden
- füge 3 ComboBoxes ein mit den Namen cbbDay, cbbMonth und cbbYear:

Option Explicit
Private Sub CommandButton1_Click()
With Me
If .cbbYear = "" Or .cbbMonth = "" Or .cbbDay = "" Then
MsgBox "Datum eingeben"
Exit Sub
End If
Sheets("Tabelle1").Cells(1, 1) = DateSerial(.cbbYear, .cbbMonth, .cbbDay)
End With
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer
With Me
For i = 1 To 31
.cbbDay.AddItem i
Next
For i = 1 To 12
.cbbMonth.AddItem i
Next
For i = 1900 To Year(Date)
.cbbYear.AddItem i
Next
End With
End Sub
Noch nicht berücksichtigt sind hier die unterschiedliche Anzahl von Tagen der Monate. Die Auswahl 31.2.2010 ergäbe also den 3.3.2010 - das kann man aber im Code auch noch abfangen.
Gruß
Christian
Anzeige
AW: die Alternative mit ComboBoxes...
28.02.2010 17:53:37
Peter
Hi
ich hab hier meine Datei. wie kann ich das mit der ComboBox so einbinden das auch der rest klappt. Das heist das der komplette Code in der Mappe geändert werden muß? Oder?
mfg Peter
Das ist die neue Datei mit den CB
https://www.herber.de/bbs/user/68283.zip
Das ist die alte Datei ohne die CB
https://www.herber.de/bbs/user/68284.zip
AW: die Alternative mit ComboBoxes...
28.02.2010 18:21:54
ChristianM
Hi,
komplette Code in der Mappe geändert werden
nee, um die Comboboxes zu füllen, brauchst du den Part vom Initialize-Ereignis und um die Einträge in die Tabelle zu schreiben die Aktion aus CommandButton1_Click.
Ansonsten hab ich dir zu diesem Thema schon mal einen Vorschlag gemacht.
https://www.herber.de/forum/archiv/1136to1140/t1138476.htm
Gruß
Christian
Anzeige
AW: die Alternative mit ComboBoxes...
01.03.2010 07:40:48
Peter
Hi
das mit den ComboBxes bekomme ich nicht hin so gut sind meine kenntnisse nicht. Und mit deinem Vorschlag erst recht nicht. Bin leider ein Anfänger. Aber vieleicht könntst du mir ja trotzdem helfen das ich das hinbekomme.
mfg Peter
AW: die Alternative mit ComboBoxes...
01.03.2010 14:12:38
ChristianM
hmh?
du musst doch nur 3 ComboBoxes einfügen, denen den entspr. Namen geben und zum Füllen der cbb's den genannten Teil aus meinem Bsp bei dir ins Initialize-Ereignis kopieren.
Gruß
Christian
AW: Code Problem
26.02.2010 21:05:15
Peter
Hi Leute
das mit der MsgBox klappt aber die Punkte beim Datum werden nicht mehr Automatisch gesetzt. Wie bekomme ich das hin?
mfg Peter
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige