2009-08-27 4 views
3

단추 및 텍스트 필드가 포함 된 양식을 팝업하는 Excel 용 매크로를 만들었습니다. 'ctrl + Enter'또는 'F12'와 같은 단축키를 단추에 지정하는 방법이 있습니까? 바로 가기 키는 포커스가있는 필드 또는 버튼에 관계없이 작동해야합니다.excel vba 용으로 만든 양식의 단축키 지정

말 내가 가진, (지금까지 내가 vbKeyF12에 대한 MSForms.ReturnInteger를 확인 버튼/fields_Keydowns를 작성 관리해야하지만 모든 필드와 버튼에 대해 그렇게해야, 쉬운 방법?있다) 형태, 버튼 "CommandButton1을"및 텍스트 필드 "TextBox1에"2 가지 버튼의

코드 : 좀 더 필드와 버튼에 추가 할 때

Private Sub CommandButton1_click() 
ActiveCell.FormulaR1C1 = UserForm1.TextBox1.Text 
End Sub 

핫키가 도움이 될 것입니다 ...

또한 양식을 닫거나 숨기려면 '탈출'단추를 어떻게 설정합니까?

답변

5

양식을 닫거나 숨기려면 버튼을 활성화하려면 'Escape'키를 설정하십시오. 먼저 Click 이벤트가 양식을 숨기는 버튼이 필요합니다. 그런 다음 해당 버튼의 '취소'속성을 True로 설정하십시오.

양식이 표시되고 Esc 키를 누르면 양식이 닫힙니다.

'HotKey'의 경우 단추의 바로 연결 속성을 문자로 설정하면 양식이 열려있을 때 Alt + [your letter]를 누르면 해당 단추의 Click 이벤트가 발생합니다.

+0

안녕하세요, 감사 Stewbob. 'Cancel'속성은 유용합니다! 핫키의 경우 alt + [letter]는 내가 원하는 것입니다. 대신 Ctrl + Enter 또는 F1-F12 키를 사용하여 단축키를 사용할 수 있습니까? – Yoga

+1

확실하지 않은 경우 Accelerator 속성을 사용하여 실험 해보아야합니다. – Stewbob

1

그렇게 할 수있는 유일한 방법은 일상적인 처리하는 중앙 키보드를 호출하여 폼의 각 컨트롤에 대한 KeyUp 이벤트를 추가하는 것입니다

Option Explicit 

Private Sub CommandButton1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    HandleKey KeyCode 
End Sub 

Private Sub CommandButton2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    HandleKey KeyCode 
End Sub 

Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    HandleKey KeyCode 
End Sub 

Private Sub HandleKey(KeyCode As MSForms.ReturnInteger) 
    MsgBox KeyCode 
    Select Case KeyCode 
    Case 112 'F1 
     'Do something because F1 was pressed 
    Case 113 'F2 
     'Do something because F2 was pressed 
    Case 114 'F3 etc. 
    End Select 
End Sub