5

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

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

たとえば、フォームにはボタン「CommandButton1」とテキストフィールド「TextBox1」の2つがあります。

ボタンのコード:

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

ホットキーは、フィールドやボタンを追加するときに便利です...

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

4

2 に答える 2

7

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

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

「ホットキー」の場合、ボタンのAcceleratorプロパティを文字に設定し、フォームが開いているときにAlt + [文字]を押すと、そのボタンのClickイベントが発生します。

于 2009-08-27T12:42:09.763 に答える
3

これを行う唯一の方法は、中央のキーボード処理ルーチンを呼び出すフォームの各コントロールに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
于 2016-08-18T05:14:29.260 に答える