|
▼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
|
|