アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/17 18:14

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/17 18:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!