Keydown issue

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?
 
P

Patrick Molloy

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
 
J

Jacob Skaria

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
 
B

Bishop

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?
 
P

Patrick Molloy

Object variable or With block variable not set

is the name of your form correct?
 
B

Bishop

Still the same error. Weird. The other two work fine. The help file
doesn't help either.
 
N

norie

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top