• ベストアンサー

エクセルVBAでコマンドボタンを選択したい。

 すいません。私はエクセルのVBAが初心者なのですが、例えば、sheet1にコントロールツールのコマンドボタン1があるとして、いまセルA1が選択されている状態の時、キーボードの"Enter"を押すと、通常はセルA2が選択されるところを、コマンドボタン1を選択するようにしたいのですが、なにかいい方法はありませんか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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

19760101
質問者

お礼

おそくなってすいません。ありがとうございました。

その他の回答 (1)

回答No.1

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

19760101
質問者

お礼

おそくなってすいません。ありがとうございました。

関連するQ&A