• ベストアンサー

excl:ツール→マクロでの一覧表示からサブルーチンを外したい

 類似のシートに対して、同様な操作を行うため、親プロシージャをシートの選択、サブルーチンを具体的な処理として、EXCL2000にて、プログラムを組みました。  他のプログラムでは、ツール→マクロ→マクロで、表示されるプログラム一覧にサブルーチンプログラムは表示されないのですが、今回作ったものは、親子ともに表示されてしまいます。  誤操作防止のため、サブルーチン(子プロシージャ)は一覧からはずしたいのですが、どのようにしたらよいのか、回答頂けましたら、幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

今確認してみたら、Optional の引数だけでは、「マクロの一覧に表示されてしまいますね。#4の以下の部分は「マクロの一覧」に表示させないという点に関しては、間違いでした。撤回します。最近、とぼけた回答ばかりで、皆様にご迷惑をおかけしてます。申し訳ありません。 >この場合、プロシージャをコールする際にも引数を指定する必要がありますが。 の部分の補足ですが、引数に Optional キーワードをつけると引数を渡さず、プロシージャをコールできます。

134
質問者

お礼

 対策と共に、これまで作ったマクロが、親プロシージャのみ表示された理由がよく分かりました。  迷惑など、決して感じておらず、とても参考になりました。 この度は、ご回答をまことにありがとうございました。

その他の回答 (4)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

#3です。#3の回答のなかで >この場合、プロシージャをコールする際にも引数を指定する必要がありますが。 の部分の補足ですが、引数に Optional キーワードをつけると引数を渡さず、プロシージャをコールできます。 EX) Sub TestMacro (Optional DummyParam) --> Call TestMacro のように引数を渡す必要がありません。 このダミーの引数をもたせる意義ですが、、 Private Sub だと異なるモジュール間でプロシージャをコールできません。ですから、「マクロの一覧」に表示をしたくない、かつ異なるモジュールからはプロシージャをコールする必要がある場合には、私はこの方法を使っています。 他にもっとスマートな方法があると思うのですが、、、

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。 Private Sub ~ とするのが基本ですが、、 Sub TestMacro(Param) のように引数をとるプロシージャはマクロ一覧には表示されません。引数をとらないプロシージャの場合には、ダミーの引数をもたせればOKです。 この場合、プロシージャをコールする際にも引数を指定する必要がありますが。 方法のひとつとして、ご参考願います。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

モジュールの先頭行に Option Private Module の一行を加えると、そのモジュールの全てのプロシージャは表示されなくなります。 または、プロシージャに対して個々に Private 宣言を行ってください。

134
質問者

お礼

 おかげさまで、目的を達成し、早速活用させて頂きました。この度は、大変勉強になりました。  ご回答、まことにありがとうございます。

  • Zero_0
  • ベストアンサー率35% (72/201)
回答No.1

標準モジュール内のSub及びPrivate sub 何でしょうか。 モジュール内に作成した sub はマクロ表示で表示されます。その中でだけ使う private sub は表示されませんのでそのあたりでどうでしょう。 標準モジュール内 Sub aaa()   ・・・・・・・・・表示されます Sheets("sheet1").Select 表示 End Sub Private Sub 表示()  ・・・・・・表示されません Cells(1, 1) = "A" End Sub

134
質問者

お礼

 早い時間にもかかわらず、早速のご回答まことにありがとうございます。  実際に、入力してみましたところ、一覧から外れ、動作に問題が発生しないことが分かり、早速活用させて頂きました。  Private などは、制限が加わるのかと、すべて一様にSub構文を使っていましたが、同じモジュール内ならば、問題ないことがよく分かりました。  

関連するQ&A