Keydown issue

  • Thread starter Thread starter Bishop
  • Start date Start date
B

Bishop

I have a userform with 3 buttons and the following code:

Private Sub AddButton_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)

Dim A As Integer

If Chr(KeyCode) = "A" Then
Unload AddOrFind
AddTitle.Show
End If

End Sub


Private Sub FindButton_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)

Dim A As Integer

If Chr(KeyCode) = "F" Then
Unload AddOrFind
Search.Show
End If

End Sub


Private Sub SummaryButton_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)

Dim A As Integer

If Chr(KeyCode) = "V" Then
Unload AddOrFind
Summary.Show
End If

End Sub

The userform initiates with the first button active. If I press "a" then I
get the desired result. But the other two buttons do no respond to the
keydown unless I tab to that button to make it active. I would like to be
able to press any of the 3 buttons without having to tab. How do I
accomplish this?
 
the keydown for all three buttons AND the userform call a check routine,
passing the keycode.
the check routine use SELECT to determine what to do ...


Private Sub AddButton_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
CheckKey KeyCode
End Sub
Private Sub FindButton_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
CheckKey KeyCode
End Sub
Private Sub SummaryButton_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
CheckKey KeyCode
End Sub
Private Sub AddButton_Click()
CheckKey KeyCode
End Sub
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
CheckKey KeyCode
End Sub

Sub CheckKey(KeyCode As MSForms.ReturnInteger)
Select Case Chr(KeyCode)
Case "A"
MsgBox "AddTitle"
Case "V"
MsgBox "Summary"
Case "F"
MsgBox "Find"
End Select
End Sub
 
Try the below (untested)


Sub ControlForms(varCode)

If Chr(varCode) = "A" Then
Unload AddOrFind
AddTitle.Show
ElseIf Chr(varCode) = "F" Then
Unload AddOrFind
Search.Show
ElseIf Chr(varCode) = "V" Then
Unload AddOrFind
Summary.Show
End If

End Sub

Private Sub AddButton_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
ControlForms keycode
End Sub

Private Sub FindButton_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
ControlForms keycode
End Sub

Private Sub SummaryButton_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
ControlForms keycode
End Sub
 
Here is my actual code:

Sub CheckKey(KeyCode As MSForms.ReturnInteger)
Select Case Chr(KeyCode)
Case "A"
Unload AddOrFind
AddTitle.Show
Case "F"
Unload AddOrFind
GetTitle.Show
Case "V"
Unload AddOrFind
Summary.Show
End Select
End Sub

I'm getting Error 91 for GetTitle.Show. Any idea why?
 
Bishop

What are you trying to do here?

By the way you might want to look at the Excel VBA help topic on these
events.

KeyCode doesn't return an ASCII/ANSI code.

Note The KeyDown and KeyUp events apply only to forms and controls on
a form. To interpret ANSI characters or to find out the ANSI character
corresponding to the key pressed, use the KeyPress event.
 
Back
Top