関数やプロシージャを、単に 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("あ")

というように、シートモジュール名と関数名を.(半角ピリオド)でつなぐとよい。