VBAで作った関数をExcelの関数として使う

Excelのシート・セル中で使える関数として、VBAで作った関数が使えると便利です。
関数の組み合わせて複雑になってしまうものも、VBAで書けばあっさりできるという事もあるでしょう。
気がついていない人も多いですが、VBAで定義した関数はExcelからも使えます。 要件は以下の三つです。
  • Functionを使った関数定義をする。
  • 標準モジュールシートに書く。
  • FunctionはPublicにする。
要するに普通にやればいいだけです。
標準モジュールではないというとは、ワークブックのところではダメということですが、ここへ定義したものは標準モジュールからも呼べません。
また、Publicも、特にPrivateと書かなければPublicになりますから、実は書く必要がありません。(下記の例では明示します)

ここでは正負判定の文字列を返す関数で例示してみます。
Public Function judge(a As Integer) As Integer
If a < 0 Then
judge="負の数"
Elseif a = 0 Then
judge="ゼロ"
Else
judge="正の数"
Endif
End Function
こんな感じで、Excelシート(セル)の中で、他の既にある組み込み関数と同じように使うことが出来ます。(関数の補完候補としても出てきます)
こんな単純なものでもエクセルの関数の組合わせで作ろうとすると判りにくい入れ子構造になって面倒ですが、プログラムで書けばすっきるとします。
なお、引数の数が可変である関数を定義しても構いません。
-