Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
996to1000
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

Prblem mit ENTER

Prblem mit ENTER
05.08.2008 15:58:00
ray
Hallo,
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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Konnte Problem eingrenzen...
05.08.2008 16:41:28
ray
Die beiden ENTERtasten werden hier abgearbeitet:

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
MsgBox "keydown"
CalcDisp                   'Anzeige Berechnen
frmUez.txtDisp.SetFocus
'ActiveCell = CDbl(txtDisp)
ElseIf KeyCode = 27 Then   'ESC
txtDisp = ""               'Anzeige Löschen
frmUez.txtDisp.SetFocus
End If
End Sub


Hilf das jemanden?
Gruß Ray

AW: Konnte Problem eingrenzen...
05.08.2008 19:52:36
Ramses
Hallo
"..Die beiden ENTER tasten werden hier abgearbeitet:..."
Also ich kann schauen so lange ich will, ... auf meinem Lapi habe ich nur Eine :-)
Spass beiseite.
Das baut niemand nach um eine Fehlersuche zu machen.
Lade die Mappe mal hoch.
Gruss Rainer

Anzeige
AW: Konnte Problem eingrenzen...
05.08.2008 21:40:00
Nepumuk
Hi Rainer,
ist wohl so'n Winzlapi welches nur unter dem Mikroskop so richtig groß rauskommt? :-)
Hallo Ray,
das bekommst du so nicht hin, denn du setzt den Fokus in die Textbox, wenn sie ihn noch hat. In dem Event werden Tastenanschläge ausgewertet und da sitzt der Cursor garantiert noch in der Box. Erst wenn alle Events eines Controls abgearbeitet sind springt der Cursor weiter. Also kannst du ihn da gar nicht festhalten (außer du sperrst ihn z.B. im Exit-Event ein).
Was du aber machen kannst, ist die Taste selbst auszuschalten, indem du den KeyCode einfach auf 0 setzt. Damit wird die Cursorweiterschaltung unterbunden weil ja eigentlich gar keine Taste gedrückt wurde.
Private Sub txtDisp_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    ' {ENTER} und {ESC} auswerten
    On Error Resume Next 'IGITIGITIGITIGITIGITIGITIGITIGITIGITIGIT !!!!!!!!!!!!!!!!!!!!!!!!
    If KeyCode = 13 Then 'ENTER
        MsgBox "keydown"
        CalcDisp 'Anzeige Berechnen
        KeyCode = 0
        'ActiveCell = CDbl(txtDisp)
    ElseIf KeyCode = 27 Then 'ESC
        txtDisp = "" 'Anzeige Löschen
        KeyCode = 0
    End If
End Sub

Gruß
Nepumuk

Anzeige
Nepumuk DU bist genial !!!!!!!!!!!!!!!!!!!!!!
06.08.2008 08:12:52
ray
Hi Nepumuk,
vielen vielen vielen Dank. Echt große Hilfe.
Ich verneige mich vor Deinem Wissen.
Grüße aus dem regnerischen HH
Ray

AW: Konnte Problem eingrenzen...
06.08.2008 23:09:00
Ramses
Hallo Max
Manchmal sieht man wirklich den Wald vor lauter Bäumen nicht :-)
Gruss Rainer

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige