ここでは、初歩的な話題になりますが、あるシートから別シートに定義した関数コール時にコンパイルエラーとなる原因を掲載しています。なお、その他の原因の場合もあるかもしれません。
スポンサーリンク
エラーダイアログ
別シートに定義した関数をコールしようとしたときに、次のようなコンパイルエラーダイアログが出力されることがあります。
コンパイルエラー:メソッドまたはデータメンバーが見つかりません。
シート1からシート2に定義された関数の呼び出し
シート1のVBAスクリプト
Option Explicit Private Sub CommandButton1_Click() ' コンパイルエラーが発生する箇所 Call Sheet2.Sheet2_Function End Sub
シート2のVBAスクリプト
Option Explicit Private Sub Sheet2_Function() MsgBox "I am Sheet2 Function !" End Sub
このときのコンパイルエラーの原因は、Sheet2_Function 関数が Private で修飾されていることです。Private で修飾されている場合は、同一シートのスクリプト内からしか、呼び出すことはできません。
Private から Public に変更すると、エラーとなることなく、関数呼び出しを行うことができるようになります。
Public 宣言されていて、別シートから呼び出し可能な場合は、インテリセンスにも表示されます。Private 宣言の場合は、一覧に出力されません。