あるファイル「apple.xls」にユーザー定義関数「Function red(list)」があり、別のファイル「grape.xls」のマクロ「Sub purple()」で関数「red」を使いたいとします。
参照設定をすれば使えるのですが、これがなかなか曲者です。
とりあえず、手順は次の通りです。
- VBAエディタを開きます。
- メニューの ツール – 参照設定 を選択します。
- 「参照設定」ダイアログで参照可能なライブラリファイルの中に「VBAProject」があります。クリックすると場所にファイル名が表示されます。該当するファイルにチェックを入れてOKをクリックします。
これでできるはずなのですが「この名前は既にあるモジュール、プロジェクト、オブジェクト ライブラリで使われています。」というエラーが出ます。
意味が分かりません。ヘルプを見ても分かりません。「この名前」ってどれだ?
Excelのマクロでは、ファイル毎に「プロジェクトの下にモジュール、シート、ブックがある」という構造になっています。
このプロジェクトの名前がデフォルトではどれも「VBAProject」となっているのです。
つまり、現在、編集しようとしているプロジェクトの名前が「VBAProject」、参照しようとしているプロジェクトの名前も「VBAProject」となっているので「既に使われています」というエラーメッセージが出るのです。
そこで、プロジェクトエクスプローラで現在のプロジェクトを選択し、プロパティウィンドウで「オブジェクト名」を適当な文字列に変更します。
この準備をしてから上の手順を行えば、参照設定が正しくできます。そうすれば、別ファイルのユーザー定義関数を使うことができます。
コメント