関数やプロシージャを、単に Function とか Sub とせず、前に Private や Public を付けることがある。
例えば、数値型の関数 fnc(引数 文字型の変数一つ)
Public Function fnc( sVal as String) As Integer
~(内容省略)
End Function
というように書ける。
この、Private と Public の違いは「他のモジュールから参照できるかどうか」である。
Privateは、他のモジュールから参照できない。
Publicは、他のモジュールから参照できる。
上記の例のfncが M1 という標準モジュールにあったとする。その場合、fnc は Public なので他のモジュールから呼び出すことができる。しかし、上記の例で、Public を Private に書き換えると他のモジュールから呼び出しができなくなる。
なお、上記のfncがシートモジュール Sheet1 に書かれた関数の場合、他のモジュールから認識されないように見える。しかし、 fnc の前にシートモジュール名を付ければ認識できる。
Debug.Print Sheet1.fnc("あ")
というように、シートモジュール名と関数名を.(半角ピリオド)でつなぐとよい。