UserFom TextBox mit dem wert 0
#1
Question 
Hallo liebes Forum,

Ich heiße Florian und bin noch sehr neu hier ich habe ein Problem bezüglich der TextBox,
ich möchte das mit der Entf-taste der wert 0 der als startwert gesetzt ist gelöscht werden kann um eine andere zahl zu setzten und wenn keine zahl eigegeben wird sondern nur die Entf-Taste gedrückt wird soll wieder die 0 eingefügt werden.

Also die Box darf niemals Leer sein es muss immer 0 oder die eingegebene zahl drin sein.
Wenn der wert 1 beträgt funktioniert mein Code aber nicht bei 0 warum ?
Ich hoffe ich habe verständlich ausgedrückt. Blush
Hier mein Code:

Private Sub TextBox1Blue_Change()

'Es dürfen nur Zahlen eingegeben werden von 0 bis 255
   With TextBox1Blue
      If Val(.Value) > 255 Then
         MsgBox "Es ist max. ein wert von 255 erlaubt!"
         .Value = "0"
      End If
    End With
  
With TextBox1Blue
      If Val(.Value) < 0 Then  '<--Hier ist der Fehler
         MsgBox "Es muss min. ein wert von 0 eingetragen werden!"
         .Value = "0"
      End If
    End With

'Wert der Text box für die Scrollbar Übernehmen
    ScrollBar1Blue.Value = TextBox1Blue.Value
   
End Sub

Private Sub TextBox1Blue_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

'Nur Zahlen dürfen eingetragen werden
Select Case KeyAscii
  Case Asc("0") To Asc("9")
    If InStr(tb1, ",") <> 0 Then
      KeyAscii = 0
    Else
    End If
  Case Else
    KeyAscii = 0
    MsgBox "Es dürfen nur zahlen eingetragen werden!"
End Select
 
End Sub


Bei den anderen 5 TextBoxen habe ich denn wert 1 festgelegt dort klapp das ohne Probleme warum hier nicht?
Vielen Dank schon mal im voraus. Blush

Gruß Florian
Top
#2
Hallo Florian,

ich weiß zwar nicht, was tb1 ist bzw. welchen Inhalt tb1 hat, aber bei mir funktioniert es. Ich kann keinen Buchstaben, kein Komma, Punkt und auch kein - eingeben und somit auch keine Zahl kleiner 0.
Gruß Stefan
Win 10 / Office 2016
Top
#3
(16.03.2018, 10:57)Steffl schrieb: Hallo Florian,

ich weiß zwar nicht, was tb1 ist bzw. welchen Inhalt tb1 hat, aber bei mir funktioniert es. Ich kann keinen Buchstaben, kein Komma, Punkt und auch kein - eingeben und somit auch keine Zahl kleiner 0.

danke schonmal für die schnelle Antwort es soll auch keine Zahl kleiner als 0 eingegeben werden können deswegen soll die Text box bei drücken der entf taste sprich die 0 wird gelöscht und ich bekomme denn Fehler 13 AO nun soll aber durch drücken die 0 wieder eingefügt werden
Top
#4
Hallo Florian,

der Fehlerwert 13 (Typen unverträglich) kommt bei mir nicht. Wie bereits oben geschrieben, kann ich nur Zahlen 0 bis 9 eingeben, alles andere wird mit Meldung abgewiesen. Beim Drück der Entf-Taste springt das KeyPress-Ereignis nicht an. Ich habe mal zusätzlich einen CommandButton eingebaut, wo beim Drücken des Buttons eine negative Zahl eingetragen werden soll.

Code:
Private Sub CommandButton1_Click()
   TextBox1Blue.Value = -7
End Sub

Es erscheint dann die MsgBox: Es muss mindestens ein Wert von 0 eingetragen werden.
Gruß Stefan
Win 10 / Office 2016
Top
#5
(16.03.2018, 12:09)Steffl schrieb:
Code:
Private Sub CommandButton1_Click()
  TextBox1Blue.Value = -7
End Sub
Sehr komisch ich habe es jetzt auch raus gefunden aber ich habe nun ein anderes Problem im untern teil des codes sollen alle Buchstaben gesperrt werden funktioniert auch aber der wert 0 wird nicht wieder eingetragen.? 

Das ganze Programm soll ein color picker sein und das aktive Makro wenn der Benutzer eine neue Farbe wählt über schreiben.
Top
#6
Hier mal mein Programm als Anlage  und die Datei wo ich das ganze einbaue auch. Blush
Top
#7
Hallo Florian,

das ist mein (getesteter) Vorschlag exemplarisch für Blue1:
Private Sub TextBox1Blue_Change()
 With TextBox1Blue
   Select Case .Value
     Case ""
       .Value = 0
     Case Is > 255
       .Value = 255
       .SetFocus
     Case Else
       .Value = .Value
   End Select
   'Wert der Textbox für die Scrollbar Übernehmen
   ScrollBar1Blue.Value = .Value
 End With
End Sub

Private Sub TextBox1Blue_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 'Entfernen wird in Rücktaste umgewandelt
 If KeyCode = 46 Then KeyCode = 8
End Sub

Private Sub TextBox1Blue_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 'Nur Zahlen dürfen eingetragen werden
 Select Case KeyAscii
   Case 8, 48 To 57 '= Rücktaste, Tasten 0 bis 9(Asc(0) To Asc(9))
   Case Else
     KeyAscii = 0
     MsgBox "Es dürfen nur zahlen eingetragen werden!"
 End Select
End Sub
Einen generellen Rat habe ich noch: Verzichte nicht auf Option Explicit! (in Deiner Datei fielen mir 2 Fehler wegen unterschiedlicher Schreibweisen von Variablen auf)

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Florian20
Top
#8
Blush Danke für die Antwort und ja ich bin noch nicht so vertraut mit VBA ich will das ganze noch lernen ich werde es am Montag gleich mal testen :19:
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste