[[20170330152051]] 『マクロ onkey 機能について。』(カイ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロ onkey 機能について。』(カイ)

特定のセルでEnterを押した時のみ、マクロ(Macro3)を実行させたいのですが、下記の構文で上手くゆきませんでした。

Sub Onkey_Set()

    If ActiveSheet.Name = "業種定義(22業種)" And ActiveCell.Address(0, 0) = "F3" Then
        Application.OnKey "{Enter}", "Macro3"
    End If
End Sub

具体的には、一度onkeyが設定されてしまうと、アクティブセルが"F3"以外のときも、Enterでマクロが起動してしまいます。

マクロは完全に初心者です。ご教示お願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 提示された構成であれば

 Sub Onkey_Set()
    Application.OnKey "{Enter}", "Macro3"
 End Sub

 Sub Macro3()
    If ActiveSheet.Name = "業種定義(22業種)" And ActiveCell.Address(0, 0) = "F3" Then
        '実行するコード
    End If
 End Sub

 こんなようになるでしょうね。

 なお、OnKeyは『現在のエクセル』に対して有効です。
 つまり、このエクセルで関係のないブックが開かれていても作動し、もし、そのブックにも
 同じシート名があって、たまたま EnterがF3 でおされた場合に実行されます。
 また、このブックを閉じても、別ブックが開かれていて、エクセル自体は継続していた場合に
 OnKeyも継続しており、別ブックでEnterされると、このマクロブックが呼び出されて実行されます。

 少なくとも、もう使い終わったというときには

 Sub Onkey_ReSet()
    Application.OnKey "{Enter}", ""
 End Sub

 こんなコードで OnKey設定を解除しておく必要があります。

 通常は、OnKey設定は Workbook_Open あたりで、OnKey解除は Workbook_BeforeClose あたりで処理することが多いですね。

 ★ところで、もしかして Enter されたら ということではなく 業種定義(22業種)のF3 に何かしら値が
  入力されたら処理したい ということではないのですか?

  もし、そうであれば、こういった設定ではなく 業種定義(22業種)シートのシートモジュールの Changeイベントを使うべきですね。

(β) 2017/03/30(木) 15:46


「★ところで、もしかして Enter されたら ということではなく 業種定義(22業種)のF3 に何かした値が
  入力されたら処理したい ということではないのですか?」

→仰る通りです。「Changeイベント」ですか……初耳です。調べてみます。また不明点があれば、ご質問させてください。ありがとうございました!
(カイ) 2017/03/30(木) 15:51


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.