| 
    
     |  | ▼yuka さん: >ワークシート上にある、コマンドボタンにフォーカスを移してEnterキーを押せばボタン処理が実行するようにしたいのですが、うまくいきません。
 >
 >CommandButton1.activate でフォーカスが当たるように見えるのですが、そこでEnterキーを押すと、背後のワークシートのアクティブセルが移動するだけです。
 >(CommandButtonのイベントは一切発生しません)
 >
 >どのようにしたら実現可能でしょうか。
 
 ユーザーフォームで代用されては如何ですか。
 ユーザーフォームにコマンドボタンを一つ張付けて
 横幅はボタンと同じ幅で高さは小さく出来る限り小さく
 (ボタンが隠れて見えないくらい)します。
 フォームのShowModal プロパティをFalseにして下さい。
 
 下記のコードをフォームモジュールに張付けてください。
 ボタンを表示するタイミングはご自分で
 駄目だったら読み棄ててください。
 
 Option Explicit
 Private Declare Function FindWindow Lib "user32.dll" _
 Alias "FindWindowA" _
 (ByVal lpClassName As String, _
 ByVal lpWindowName As String) As Long
 
 Private Declare Function GetWindowLong Lib "User32" _
 Alias "GetWindowLongA" (ByVal hWnd As Long, _
 ByVal nIndex As Long) As Long
 
 Private Declare Function SetWindowLong Lib "User32" _
 Alias "SetWindowLongA" (ByVal hWnd As Long, _
 ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
 
 Private Declare Function DrawMenuBar Lib "User32" _
 (ByVal hWnd As Long) As Long
 
 Const WS_CAPTION As Long = &HC00000
 Const GWL_STYLE As Long = -16
 Const WS_DLGFRAME = &H400000
 Const WS_BORDER = &H800000
 
 Private Sub CommandButton1_Click()
 MsgBox "ここに処理"
 End Sub
 
 Private Sub UserForm_Initialize()
 ' 非表示
 Dim hWnd As Long, lStyle As Long
 
 hWnd = FindWindow("ThunderDFrame", Me.Caption)
 lStyle = GetWindowLong(hWnd, GWL_STYLE)
 lStyle = lStyle And Not WS_CAPTION Or WS_BORDER
 SetWindowLong hWnd, GWL_STYLE, lStyle
 DrawMenuBar hWnd
 End Sub
 
 
 |  |