質問: private subモジュールを他のモジュールから呼び出して使う方法を教えてください(-.-) 作業環境:win10 pro、excel2016vbaを使用しています。 質問事項:ワークシートのダブルクリックイベントで実行する処理を記述済です。 同ワークシート上の例えばa1からa9を範囲指定するsubモジュールからダブルクリックして連続処理をしたいのですが、 モジュールからprivate subモジュールに記載の処理を呼び出す方法を教えてください。 よろしくお願いします。
回答: こんにちは、 勘違いかも知れませんが、ワークシートのダブルクリックイベントを呼ぶ事を 考えているのでしょうか? であれば、適切な処理とは思えません。 イベントを呼ばずとも処理したいコードを別プロシージャに書けばよいかと思います。 むしろ、こちらをメインにしてダブルクリックイベントからもこのプロシージャを呼び出せばよいと思います。 private sub worksheet_beforedoubleclick(byval target as range, cancel as boolean) cancel = true dim dummy as variant call module2.sample(dummy) 'targetを使用するなら引数に食われることも可能です。 end sub private sub test() dim dummy as variant call module2.sample(dummy) end sub module2に記載 public sub sample(dummy as variant) ’ダミー引数があるのでユーザーに表示されない。 msgbox ("ok") 'メイン処理 end sub 複数のモジュール間でプロシージャを実行する事はよくあると思います。 publicはオブジェクト名を明示する事で呼び出せても privateは同じモジュール内でなければ呼べないかと、、 しかしpublic sub をユーザー(リボンなどから)から実行できないようにする場合 引数を付ければリボンなどには表示されなくなります。引数は、ダミーで良いので簡単です。