|
おはようございます。
> フォームのボタンを押すことにより、
>処理を実行するようにしたいと思います。
> このフォームは、ブック内の複数シートで共有したいと思います。
> さらに、行いたい処理は、各シートで異なります。
>
> そのため、フォームのボタンのクリックイベントに、
>
>call ActiveSheet.macro1
>
>と記述し、各シートモジュールに、
>
>public sub macro1
>(そのシートで行わせたい処理)
> 質問なのですが、根本的に、
>「シートモジュールは別モジュールから呼び出せない」
オブジェクトモジュール(シートやブックやユーザーフォームやクラスモジュール)
にPublicプロシジャーを記述するということは、
そのオブジェクトに独自のメソッドを作成する ということですよね?
よって、そのオブジェクトのインスタンスさえ取得できれば、
どこからでもメソッドの実行は可能です。
呼び出し元とは、違うブックのシートのプロシジャーだって、
別Excelで開いているブックのシートに記述されているプロシジャーだって・・。
ですから、原則
>call ActiveSheet.macro1
これは出来るはずです。
ただ、VBAは、不可解なことも多いから、
Dim Sht as worksheet
set sht=activesheet
sht.macro1
↑これは、コンパイルエラーになります。
dim sht as objewct
set sht=activesheet
sht.macro1
これは、作動しますが・・・。
以前こんな投稿をしたことがありました。
www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=247;id=FAQ
プロパティとメソッドの違いはありますが、同じだと思います。
Activesheet.macro
理論的には、作動するはずですが、あまり見かけない記述なので
よくよくデバッグした方がよいかもしれませんよ!!
|
|