- ベストアンサー
エクセルVBAでコマンドボタンを選択したい。
すいません。私はエクセルのVBAが初心者なのですが、例えば、sheet1にコントロールツールのコマンドボタン1があるとして、いまセルA1が選択されている状態の時、キーボードの"Enter"を押すと、通常はセルA2が選択されるところを、コマンドボタン1を選択するようにしたいのですが、なにかいい方法はありませんか?よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 セルA1が選択されている状態の時、キーボードの"Enter"を押す、と Sheet1 のコマンドボタン1を選択するようにする マクロにすれば、このようになりますが、たった一つのキーのために、全体の設定をしなくてはならないのかは、私には少し疑問に感じます。コマンドボタンは、独立したものだから、そのぐらいは、ユーザーが選択して行うべきのような気がしますが。 設定の仕方は、Auto_Open などに、SetEnterKey を呼び出せばよいと思います。なお、他のマクロとの併用で、セルを選択するものがある場合は、誤動作する可能性がありますから、その場合は、SetOffKeyで解除が必要です。 '標準モジュール 'Option Explicit Sub SetEnterKey() 'キーの設定 Application.OnKey "{Enter}", "mySelectButton" Application.OnKey "~", "mySelectButton" End Sub Sub SetOffEnterKey() 'キーの解除 Application.OnKey "{Enter}" Application.OnKey "~" End Sub Sub mySelectButton() If TypeName(Selection) <> "Range" Then Exit Sub If ActiveSheet Is Worksheets("Sheet1") Then If Not Intersect(Selection, Range("A1")) Is Nothing Then Worksheets("Sheet1").CommandButton1.Select Else ActiveCell.Offset(1).Activate 'オプションのカーソル移動が下の場合(Activateが良い) End If Else ActiveCell.Offset(1).Activate 'オプションのカーソル移動が下の場合 End If End Sub
その他の回答 (1)
- misatoanna
- ベストアンサー率58% (528/896)
Sheet1 に コントロールツールのコマンドボタン1とコマンドボタン2があると した場合ですが、Sheet1 のシートモジュールに以下を記述します。 Private Sub SLCT() Select Case Selection.Address Case Is = "$A$1" Application.Run "Sheet1.CommandButton1_Click" '(A) Case Is = "$A$2" Application.Run "Sheet1.CommandButton2_Click" '(B) Case Else Selection.Offset(1, 0).Select End Select End Sub Private Sub CommandButton1_Click() '(C) MsgBox "Button 1" End Sub Private Sub CommandButton2_Click() '(D) MsgBox "Button 2" End Sub > コマンドボタン1を選択するようにしたい 選択するだけで、コマンドボタンに設定されたマクロを実行しないのでしたら、 (A)の部分は、 ActiveSheet.CommandButton1.Select (B)の部分は、 ActiveSheet.CommandButton2.Select に、書き換えてください。 ここで次のマクロを実行しますと、Sheet1 の セル A1 が選択されているとき には CommandButton1 が、A2 がアクティブなときには CommandButton2 がクリ ックされ、それ以外のセルが選択されているときはアクティブセルが下に移動 します。 Sub DefKey() Application.OnKey "~", "Sheet1.SLCT" End Sub
お礼
おそくなってすいません。ありがとうございました。
お礼
おそくなってすいません。ありがとうございました。