Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Keypress Ereignis | Herbers Excel-Forum


Betrifft: Keypress Ereignis von: Sascha
Geschrieben am: 07.02.2012 09:36:55

Hallo liebe Experten.

Kann man das Keypress-Ereignis auch in einer Schlaufe einbinden?
Ich habe für mehrere Textboxen (benannt: TB3 - TB46) jeweils ein Keypress Befehl erstellt.
Nun möchte ich gerne die Mappengrösse reduzieren.
Ich habe versucht das Keypress-Ereignis das x-mal vorkommt in eine For - Next Schlaufe einzubinden.
Aber das funktioniert nicht so ganz.
Kann man dies nicht noch anders lösen für alle Textboxen?
Hier der Code für meine erste Textbox:

Private Sub TB3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
      'nur Zahlen eingeben. Text verboten
        Select Case KeyAscii
         Case 8, 9, 48 To 57 'Backspace, Tab, 0 bis 9
            If InStr(1, TB3, ".") > 0 Then
               If TB3.SelLength = 0 Then
                  If TB3.SelStart > InStr(1, TB3, ".") Then
                      If Len(Mid(TB3, InStr(1, TB3, ".") + 1)) > 0 Then
                            KeyAscii = 0
                      End If
                  End If
               End If
            End If
          Case 46 'Punkt 44 = Komma
            If InStr(1, TB3.text, Chr(46), vbTextCompare) > 0 Then
              KeyAscii = 0
              Beep
            End If
          Case Else
            KeyAscii = 0
            Beep
            MsgBox String(5, 32) & "Hier dürfen nur Zahlen eingegeben werden. ", -8
        End Select
        
      End Sub
Liebe (kalte) Grüsse
Sascha

  

Betrifft: AW: Keypress Ereignis von: Rudi Maintaire
Geschrieben am: 07.02.2012 10:05:05

Hallo,
das geht nur mit einer eigenen Klasse.
Alternative: Den langen Code auslagern und nur aufrufen

Private Sub TB3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  KeyAscii=CheckKey(KeyAscii, TB3)
End Sub

Function CheckKey(ByVal intKey As Integer, oTextBox As Object)
  'nur Zahlen eingeben. Text verboten
  Select Case intKey
    Case 8, 9, 48 To 57 'Backspace, Tab, 0 bis 9
      If InStr(1, oTextBox, ".") > 0 Then
        If oTextBox.SelLength = 0 Then
          If oTextBox.SelStart > InStr(1, oTextBox, ".") Then
            If Len(Mid(oTextBox, InStr(1, oTextBox, ".") + 1)) > 0 Then
              CheckKey = 0
            End If
          End If
        End If
      End If
    Case 46 'Punkt 44 = Komma
      If InStr(1, oTextBox.Text, Chr(46), vbTextCompare) > 0 Then
        CheckKey = 0
        Beep
      End If
    Case Else
      CheckKey = 0
      Beep
      MsgBox String(5, 32) & "Hier dürfen nur Zahlen eingegeben werden. ", -8
  End Select
End Function

Gruß
Rudi


  

Betrifft: AW: Keypress Ereignis von: Sascha
Geschrieben am: 07.02.2012 11:04:16

Hallo Rudi,

Ach so... Ok, Vielen lieben Dank. werde es gleich testen.

Liebe Grüsse
Sascha


Beiträge aus den Excel-Beispielen zum Thema "Keypress Ereignis"