Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4976 / 13645 ツリー ←次へ | 前へ→

【53297】ファンクションキーへのマクロ割り当て PIKO 07/12/26(水) 13:00 質問[未読]
【53298】Re:ファンクションキーへのマクロ割り当て Jaka 07/12/26(水) 13:27 発言[未読]
【53299】Re:ファンクションキーへのマクロ割り当て PIKO 07/12/26(水) 14:17 発言[未読]
【53301】Re:ファンクションキーへのマクロ割り当て Jaka 07/12/26(水) 15:23 発言[未読]
【53304】Re:ファンクションキーへのマクロ割り当て PIKO 07/12/26(水) 16:37 お礼[未読]

【53297】ファンクションキーへのマクロ割り当て
質問  PIKO  - 07/12/26(水) 13:00 -

引用なし
パスワード
   ご教授お願いします。
現在、ユーザフォームに「登録」と「閉じる」のボタンがあります。

F10、F12を押した時に、登録(F10)と閉じる(F12)の命令をそれぞれ実行させたいのですが、どうしたら良いでしょうか?

今までファンクションキーの割り当ては、モジュール内(命令1〜5)の処理だけでしたので、Workbook_Open()時に、
下記のようにしてました。しかし、ユーザフォームでのやり方がわかりません。

  Application.OnKey "{F4}", "命令1"
  Application.OnKey "{F5}", "命令2"
  Application.OnKey "{F6}", "命令3"
  Application.OnKey "{F7}", "命令4"
  Application.OnKey "{F8}", "命令5"

よろしくお願いいたします。

【53298】Re:ファンクションキーへのマクロ割り当て
発言  Jaka  - 07/12/26(水) 13:27 -

引用なし
パスワード
   フォームがアクティブ状態だと、OnKeyメソッドは、動かなかったと思います。
フォームが表示状態であれば、下記等を使うのが良いと思います。
細かく言うと、全てのコントロール類全てに?

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

Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Inte

【53299】Re:ファンクションキーへのマクロ割り当て
発言  PIKO  - 07/12/26(水) 14:17 -

引用なし
パスワード
   Jaka さんありがとうございます。
私の質問の仕方と知識不足が悪いのですが、回答の意味がよく理解できませんした。
回答以前(F12への割り当て〜)で引っかかってる気がします。

UserForm1にある「閉じる」ボタンには、次の処理をさせています。

Private Sub 閉じる_Click()

  Answer = MsgBox("終了します。よろしいですか?", _
       vbYesNo + vbQuestion, "成績日報")
       
  Select Case Answer
  
    Case vbYes
  
      Unload Me
      
    Case vbNo
    
  End Select
  
End Sub

F12を押しても、上記のPrivate Sub 閉じる_Click()を実行させたいのです。

どうか、よろしくお願いいたします。

【53301】Re:ファンクションキーへのマクロ割り当て
発言  Jaka  - 07/12/26(水) 15:23 -

引用なし
パスワード
   Application.OnKey は、
エクセルがアクティブでないと動きません。
フォームをモードレスにして、シートをクリックした後なら動くけど...。

だから、フォームがアクティブの場合は、押されたキー番号で判定してやりたいことをさせると言うことです。

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
MsgBox "押されたキー番号は、" & KeyCode
End Sub

【53304】Re:ファンクションキーへのマクロ割り当て
お礼  PIKO  - 07/12/26(水) 16:37 -

引用なし
パスワード
   Jakaさんありがとうございます。

なぜか、UserFormにフォーカスが当たっておらず・・・
コントロール数がボタン含め6個でしたので、すべてにPrivate Sub オブジェクト名_KeyDownにて、できました。

Private Sub 登録_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  test KeyCode
End Sub
Private Sub 閉じる_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  test KeyCode
End Sub





Private Sub test(n As MSForms.ReturnInteger)
  
  Select Case n

    Case vbKeyF10

    Case vbKeyF12

  End Select

End Sub

ありがとうございました!

4976 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free