VBA でエクセルのオリジナル関数を作成します

 VBA にはサブルーチンやワークシートで呼びだすことのできる Function Macro(ユーザー定義関数) を作成することができます。つまり、Excel 関数のように、ワークシートで使用できる オリジナル関数 を作れてしまうということです。
「こんな関数いいな♪ できたらいいな♪」
と思いついたら、自作してしまえばいいのです。すごいですね~。わんだふるですね~。ふぁんたすてぃっくですね~。そんなわけで、Function Macro(ユーザー定義関数)の作り方を説明しますよ~。

Function Macro(ユーザー定義関数)

 Function Macro(ユーザー定義関数)は値を返すマクロです。値といっても、必ずしも数字のことだけでなく、文字列なども含むのですけど、要するに入力した値を足し算したり、入力した文字列を並べ替えたりして、その結果を返すということです。ですから、セルを選択したり、シートをコピーしたりするような Function Macro はつくれません。そういうのは普通のサブルーチンでつくってください。
 

立方体の体積を求める関数

 何はともあれ簡単な関数を作ってみましょう。立方体の「縦」「横」「高さ」の値を入力して体積を求めるマクロです。

 Function CUBE(a As Double, b As Double, c As Double) As Double

  CUBE = a * b * c

 End Function

 Function Macro を作成するときは、Sub ではなく、Function というステートメントでマクロを書き始めます。結びは End Function です。上の例では CUBE が関数名です。( ) の中にはユーザーさんが入力する引数の変数名とデータ型を書いておきます(データ型を省略すると Variant 型になります)。上の例では a, b, c が変数名で、すべて Double 型にしてあります。そして ( ) の後ろには、戻り値のデータ型を宣言しておきます(こちらもデータ型を省略すると Variant 型になります)。上の例では戻り値も Double 型です。

 それでは、CUBE 関数をワークシートで使ってみましょう。どこか適当なセルに

=CUBE(2,3,5)

と入力してみてください。

 cube関数(体積を求めるオリジナル関数)

 図のように、体積の値「30」が返ってくるはずです。
 Function Macro はサブルーチンで呼びだすこともできます。

 立方体の体積を求めます

 Sub CubeVolume()

  Dim x As Double, y As Double, z As Double

  x = 2
  y = 3
  z = 5

  Debug.Print CUBE(x, y, z)

 End Sub

 実行するとイミディエイトウィンドウに「30」が表示されます。このマクロでは、変数 x, y, z に予め値を入れておいてから、その変数名で CUBE 関数を呼びだしています。変数のデータ型さえ合っていれば、このようにしてかまいません。もちろん、数値を直接入れて値を得ることもできます。

 立方体の体積を求めます

 Sub CubeVolume()

  Debug.Print CUBE(2, 3, 5)

 End Sub

 このマクロを実行すると、やはり「30」が表示されます。
 VBA をあまり使わない人も、Function Macro の作り方だけでも覚えておくと、関数の種類を増やすことができるし、さらに他の関数と組合わせることで、機能を次々と拡張していくことができます。皆さんも、お仕事に役立つようなオリジナル関数をたくさんつくってくださいな~。

 ≫ VBA 辞典メニューに戻って他の記事も読んでね~♪

Google広告
スポンサーリンク
スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください