Prblem mit ENTER
05.08.2008 15:58:00
ray
auf einer Userform habe ich ein Frame, in dem eine Textbox 'txtDisp' liegt. Sie ist das Eingabe und Ausgabefeld von einem Taschenrechner. Problem: wenn ich auf die ENTERtaste drücke, dann wird zwar das ergebnis im txtDisp angezeigt, aber der focus geht auf eine andere Schaltfläche auf der USerform. Dies möchte ich verhindern, der Curser soll nach der Berechnung wieder in txtDisp blinken, wo ja auch das Ergebnis dann steht.
Hier der Code: Ich habe schon überall eingetragen txtDisp.setFocus, aber wohl noch nicht die richtige Stelle gefunden....
Weiß jemand Rat?
Viele GRüße aus HH
Option Explicit
Public rechnen As Variant
Private Sub CommandButton69_Click()
If Frame1.Visible = False Then
Frame1.Visible = True
Frame1.Left = 378
Frame1.Top = 18
txtDisp.SetFocus
Else: Frame1.Visible = False
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode 1 Then Cancel = 1
frmUez.Caption = "Bitte beenden Sie nur mit BEENDEN - Dirk Steinke "
CommandButton71.SetFocus
End Sub
Private Sub btnEql_Click()
CalcDisp
frmUez.txtDisp.SetFocus
End Sub
Private Sub btnPaste_Click()
frmUez.tbEur.Value = frmUez.txtDisp
End Sub
Private Sub btnRoot_Click()
On Error Resume Next
CalcDisp
txtDisp = Sqr(CDbl(txtDisp))
frmUez.txtDisp.SetFocus
End Sub
Private Sub btnZu_Click()
ClickBtn (")")
End Sub
Private Sub txtDisp_Enter()
txtDisp.SetFocus
End Sub
Private Sub txtDisp_AfterUpdate()
frmUez.txtDisp.SetFocus
End Sub
Private Sub txtDisp_Change()
frmUez.txtDisp.SetFocus
End Sub
Private Sub txtDisp_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
'Cancel = True
'frmUez.txtDisp.SetFocus
End Sub
Private Sub txtDisp_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
' {ENTER} und {ESC} auswerten
On Error Resume Next
If KeyCode = 13 Then 'ENTER
CalcDisp 'Anzeige Berechnen
ActiveCell = CDbl(txtDisp)
ElseIf KeyCode = 27 Then 'ESC
txtDisp = "" 'Anzeige Löschen
frmUez.txtDisp.SetFocus
End If
End Sub
Private Sub txtDisp_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' nur Zahlen un Mathematische Operatoren zulassen
Select Case KeyAscii
Case 40 To 57, 37, 94
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub ClickBtn(strTxt As Variant)
'Anzeige aktualisieren
txtDisp = txtDisp & strTxt
txtDisp.SetFocus
End Sub
Private Sub CalcDisp()
'Berechnung durchführen
On Error GoTo ERRH
If frmUez.txtDisp "" Then
frmUez.txtDisp = Evaluate(Replace(frmUez.txtDisp, ",", "."))
frmUez.txtDisp.SetFocus
End If
frmUez.txtDisp.SetFocus
Exit Sub
ERRH: 'Fehlerbehandlung
MsgBox "Angezeigte Rechenaufgabe kann" & vbLf & "nicht gelöst werden !", _
vbOKOnly + vbExclamation, "Fehler"
End Sub
Viele Grüße aus Hamburg
Ray