2009-08-27 9 views
3

ボタンとテキストフィールドを含むフォームをポップアップ表示するExcel用のマクロを作成しました。 'ctrl + Enter'や 'F12'などのホットキーをボタンに割り当てる方法はありますか?ホットキーは、フォーカスがあるフィールドまたはボタンに関係なく機能します。私が持っているexcel vba用に作成されたフォーム上のボタンにホットキーを割り当てる

(これまでのところ、私はvbKeyF12ためMSForms.ReturnIntegerをチェックするためのボタン/ fields_Keydownsを作成するために管理しているが、私はすべてのフィールドとボタンのことを行う必要があり、簡単な方法はありますか?)

言って、フォーム上の2つのこと、ボタン「CommandButton1という」とテキストフィールド「のTextBox1」ボタンの

コード:私はより多くのフィールドとボタンに追加するときに

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

ホットキーは

...有用であろう

また、フォームを閉じる/隠すために 'エスケープ'ボタンを設定するにはどうすればよいですか?

答えて

5

ボタンをアクティブにしてフォームを閉じる/非表示にするには: まず、Clickイベントがフォームを非表示にするボタンが必要です。次に、そのボタンの 'Cancel'プロパティをTrueに設定します。

フォームが表示され、Escキーを押すと、フォームが閉じます。

ボタンのAcceleratorプロパティを文字に設定すると、フォームが開いているときにAlt + [あなたの手紙]を押すと、そのボタンの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 
関連する問題