[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロ 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
入力されたら処理したい ということではないのですか?」
→仰る通りです。「Changeイベント」ですか……初耳です。調べてみます。また不明点があれば、ご質問させてください。ありがとうございました!
(カイ) 2017/03/30(木) 15:51
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.