• ベストアンサー

エクセルVBAでpublic functionを使っているのですが・・・

エクセルVBAでpublic functionを使っているのですがmicrosoft excel objectsで作成してもフォームからは使えないしフォームで作成してもmicrosoft excel objectsから使えないので困っています、両方から使えるようにできませんか?お願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

>microsoft excel objectsで作成しても Microsoft Excel Objects というのは、VBAでは、Excel Applicationオブジェクトのことを指すように思います。それを作成するというと、WordやAccess やVBなどの外部から使うという意味に取れますが、コードがないので、意味がはっきりしません。 もし、そうでないのでしたら、標準モジュールでは、別に、Public ステートメントをつけなくても使えるはずです。Public ステートメントは、変数ではありませんので、この際、あまり役に立ちませんね。 一般性のないユーザー定義関数の場合、通常は、同じモジュールの中に、Private ステートメントをつけて使いますし、また、そのほうが安全な気もします。 もしも、単独のユーザー定義関数でしたら、つまり、別のブックのユーザー定義関数でしたら、そのProject自体を、参照設定するか、アドインにして、一旦、アドインを読んでから使用するか、 A = Application.Run("ブック名!ユーザー定義関数名") とすれば、取れるはずです。

satooo
質問者

お礼

ありがとうございます。

その他の回答 (1)

回答No.1

どこからでも参照できるFunctionを作りたいのでしたら、 標準モジュールに書く必要があります。 まず、「VBAproject」を右クリックして「挿入」→「標準モジュール」を選んでください。そうすると、標準モジュール→Module1が追加されます。ここにPublicで書くとどこからでも参照できるようになります。

satooo
質問者

お礼

どうもありがとうございます。早速試してみます。