Excel VBA質問箱 IV

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

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


4106 / 13644 ツリー ←次へ | 前へ→

【58391】シート上のコマンドボタンをEnterキーで yuka 08/10/23(木) 12:07 質問[未読]
【58394】Re:シート上のコマンドボタンをEnterキーで マクロマン 08/10/23(木) 12:59 発言[未読]
【58397】Re:シート上のコマンドボタンをEnterキーで yuka 08/10/23(木) 14:09 質問[未読]
【58396】Re:シート上のコマンドボタンをEnterキーで Jaka 08/10/23(木) 13:59 発言[未読]
【58402】Re:シート上のコマンドボタンをEnterキーで yuka 08/10/23(木) 15:49 お礼[未読]
【58403】Re:シート上のコマンドボタンをEnterキーで Yuki 08/10/23(木) 15:54 発言[未読]

【58391】シート上のコマンドボタンをEnterキーで
質問  yuka  - 08/10/23(木) 12:07 -

引用なし
パスワード
   ワークシート上にある、コマンドボタンにフォーカスを移してEnterキーを押せばボタン処理が実行するようにしたいのですが、うまくいきません。

CommandButton1.activate でフォーカスが当たるように見えるのですが、そこでEnterキーを押すと、背後のワークシートのアクティブセルが移動するだけです。
(CommandButtonのイベントは一切発生しません)

どのようにしたら実現可能でしょうか。

【58394】Re:シート上のコマンドボタンをEnterキー...
発言  マクロマン  - 08/10/23(木) 12:59 -

引用なし
パスワード
   やりたいことと違ったらスルーしてください。

シートモジュール
Private Sub CommandButton1_Click()

Public Sub CommandButton1_Click()

としておいて、

Call Worksheets(1).CommandButton1_Click

で直接コマンドボタンのクリックイベントを呼ぶ、
ではだめですか?

【58396】Re:シート上のコマンドボタンをEnterキー...
発言  Jaka  - 08/10/23(木) 13:59 -

引用なし
パスワード
   大雑把ですが。

Private Sub CommandButton1_Click()
MsgBox "aaaa"
End Sub

Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
  Sheets("Sheet1").CommandButton1 = True
End If
End Sub

【58397】Re:シート上のコマンドボタンをEnterキー...
質問  yuka  - 08/10/23(木) 14:09 -

引用なし
パスワード
   マクロマンさんご回答ありがとうございます。

ボタンの前にテキストボックスがありまして、テキストボックスの入力が終わると、セルに情報を表示し、確認してOKだったら、Enterを押して(ボタンクリックと同意)入力を確定させるという、一般的な入力フォームのようなことをやろうとしています。

そのために、Enterキーでボタンが押せれば良いのですが。。。

【58402】Re:シート上のコマンドボタンをEnterキー...
お礼  yuka  - 08/10/23(木) 15:49 -

引用なし
パスワード
   Jaka さん:

ありがとうございました。
できました。

【58403】Re:シート上のコマンドボタンをEnterキー...
発言  Yuki  - 08/10/23(木) 15:54 -

引用なし
パスワード
   ▼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

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