別ファイルのユーザー定義関数を使う方法

あるファイル「apple.xls」にユーザー定義関数「Function red(list)」があり、別のファイル「grape.xls」のマクロ「Sub purple()」で関数「red」を使いたいとします。

参照設定をすれば使えるのですが、これがなかなか曲者です。
とりあえず、手順は次の通りです。

  1. VBAエディタを開きます。
  2. メニューの ツール – 参照設定 を選択します。
  3. 「参照設定」ダイアログで参照可能なライブラリファイルの中に「VBAProject」があります。クリックすると場所にファイル名が表示されます。該当するファイルにチェックを入れてOKをクリックします。

これでできるはずなのですが「この名前は既にあるモジュール、プロジェクト、オブジェクト ライブラリで使われています。」というエラーが出ます。
意味が分かりません。ヘルプを見ても分かりません。「この名前」ってどれだ?

Excelのマクロでは、ファイル毎に「プロジェクトの下にモジュール、シート、ブックがある」という構造になっています。

このプロジェクトの名前がデフォルトではどれも「VBAProject」となっているのです。
つまり、現在、編集しようとしているプロジェクトの名前が「VBAProject」、参照しようとしているプロジェクトの名前も「VBAProject」となっているので「既に使われています」というエラーメッセージが出るのです。

そこで、プロジェクトエクスプローラで現在のプロジェクトを選択し、プロパティウィンドウで「オブジェクト名」を適当な文字列に変更します。
この準備をしてから上の手順を行えば、参照設定が正しくできます。そうすれば、別ファイルのユーザー定義関数を使うことができます。

コメント

タイトルとURLをコピーしました