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

Privatesub のプログラムをタイミングを変えて処理したいです。

お世話になります。
また、教えて頂きたいことがあります。
同じオブジェクトやモジュールの複数のプログラムを別々に処理することは可能でしょうか?

今、This Workbook Object にPrivatesub のプログラムが2つあり、

Private sub
  プログラム①
End Sub

Private sub
プログラム②
End Sub

となっています。

それぞれのプログラムは正常に動きます。
これを、プログラム①はショートカットメニューで、プログラム②は指定したセルを変更したときに動かしたいです。

何かいい方法を教えて頂きたいです。
よろしくお願いいたします❗

A 回答 (1件)

こんにちは。



>This Workbook Object にPrivatesub のプログラムが2つあり、
まず、ThisWorkbook モジュールのことだと思います。

ThisWorkbook モジュール の中でしたら、
①を
ショートカットで使いたいのでしたら、

Private Sub Workbook_Open()
  Application.OnKey "^;", "ThisWorkbook.プロシージャ名①"
End Sub


Shift  +
Ctrl   ^
Alt   %

特殊なキーの[+^%] と他のキーの組みあせで、ショートカットキーを付け加えることが可能です。
普通は標準モジュールで設定することが多いです。

②を、Sheet1 のA1で使いたいのでしたら、

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> Worksheets("Sheet1").Name Then Exit Sub '除外条件
If Target.Address <> "$A$1" Then Exit Sub   '除外条件
Application.EnableEvents = False  '←場合によって必要*
   Application.Run "ThisWorkbook.プロシージャ名②"
Application.EnableEvents = True  '←場合によって必要**
End Sub

*マクロが自動的に稼働すと、そのイベントの種類によっては、再びイベントが発生し、再度マクロを繰り返そうとすることがあります。そういう時に、EnableEvents =False を使います。**利用し終わったら、再びTrue にしてあげないと、イベントが発生しなくなることもあります。
    • good
    • 0
この回答へのお礼

やってみます

なるほど~。
標準モジュールでもできるんですね。
参考になりました。
ありがとうございました。

お礼日時:2017/01/30 15:51

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