[[20170918182738]] 『別ブックで作成したマクロのシュートカットを優先』(のっぽ) ページの最後に飛ぶ

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

 

『別ブックで作成したマクロのシュートカットを優先させたくない』(のっぽ)

a、b 2つのブックにマクロを作成して同じショートカットキーを割り当てた場合、両方のブックを開いた状態でショートカットキーを使用するとどちらのブックを使用している場合でもショートカットで最初に開いたブックのマクロが実行されてしまいます。
これを、
aのブックを使用している場合はaのマクロ実行
bのブックを使用している場合はbのマクロ実行
とする方法はないでしょか?

具体的には、例えば以下をそれぞれ作成し、「Cntl+m」でショートカットを作成ししておきます。
a.xlsm、b.xlsmの順番でブックを開き、b.xlsmを使用している状態で「Cntl+m」としても
【Aのマクロ実行】というメッセージボックスが立ち上がります。
これを【Bのマクロ実行】というメッセージボックスが立ち上がるようにできないでしょうか?
よろしくお願いします。

a.xlsmで作成したマクロ
Sub MacroA()

    MsgBox "Aのマクロ実行"
End Sub

b.xlsmで作成したマクロ
Sub MacroB()

    MsgBox "Bのマクロ実行"
End Sub

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 OnKeyメソッドだろうか?
 Application.MacroOptionsだろうか?
(カリーニン) 2017/09/18(月) 19:09

現在はOnKeyメソッドもApplication.MacroOptionsも(陽には?)使用しておりません。
「Alt+F8」などでマクロを作成する際に「オプション」で、ショートカットキーとして「Cntl+m」で登録しています。
(のっぽ) 2017/09/18(月) 19:17

 OnKeyメソッドなら、↓のようにアクティブブックのマクロを実行させることができますけど、
 OnKeyメソッドではだめなのでしょうか?

 ↓は標準モジュールのtestというマクロをCtrl+yで呼び出します。
 全てのブックで同じマクロ名、同じショートカットキーでもいけます。

 'ThisWorkbookモジュール

 Private Sub Workbook_Activate()
  Application.OnKey "^y", "test" 'Ctrl+y
 End Sub

 Private Sub Workbook_Deactivate()
  Application.OnKey "^y"
 End Sub

 Private Sub Workbook_Open()
  Application.OnKey "^y", "test" 'Ctrl+y
 End Sub

 Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Application.OnKey "^y"
 End Sub
(カリーニン) 2017/09/18(月) 20:52

ThisWorkbookモジュールはこういう場合に使用するのですね、初めて使用してみました。
上記のコードを参考にThisWorkbook以下に作成することで無事動作することが出来ました。
大変助かりました。ありがとうございます!

(のっぽ) 2017/09/18(月) 22:39


コメント返信:

[ 一覧(最新更新順) ]


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