【ゼロからわかるVBA入門】VBA関数

電卓
この記事は約3分で読めます。

プログラミング初心者向けのVBA入門講座第15回です。

いままでの講座でVBAの基本構文であるオブジェクト式ステートメントについて紹介してきました。

VBAの構文は大きくわけて
オブジェクト式
ステートメント
関数
の3つでしたね。詳しくは第6回の講座を参照ください。

→過去の入門講座目次はこちら

今回は関数について紹介します。

関数の基本

Excelのセルに入力して使用する関数(ワークシート関数)と同じようにVBAにもあらかじめ用意された関数がありそれらを使用することができます。

関数の基本についてまずはワークシート関数の例をみてみましょう。

よく使われる関数として次のようなものがあります。

=SUM(10,20,30)
=AVERAGE(A1:A3)

これはそれぞれ括弧内に与えられた値(ここでは直接指定された「10,20,30」や指定されたセル範囲「A1:A3」の値)を使って合計や平均の計算処理をしてその結果をセルに表示させます。

このときの括弧内で与えられた処理のもととなる値を引数(ひきすう)といいます。

また、処理結果として返す値のことを戻り値(もどりね)といいます。

=SUM(10,20,30)」の例では「10,20,30」が引数、計算結果となる合計の「60」が戻り値です。

関数というのは基本的にはこのように処理のもととなる値を引数として受け取り、処理の結果を返すものです。

処理には上記の例のような数学的な計算のほかに、文字列の操作や検索、日付や時間データの処理などがあります。

VBAの関数でもこれらの基本は同じです。

例)
Range(“A1”).Value = Year(#8/15/2019#)

この例ではYear関数が引数として日付リテラル(#8/15/2019#)を受け取り、戻り値としてその年数を表す整数(2019)を返しています。

例外的な関数の記述方法

関数では通常引数を括弧で囲って指定しますが、一部に例外があります。

ひとつは関数として処理結果の戻り値を受け取らない場合です。

よく使われるのがMsgBox関数で戻り値を利用しない場合です。MsgBox関数ではダイアログに設置したボタンのうちユーザーがどのボタンを押したかによって戻り値が返されますが、この戻り値を受け取る必要のないケースが多々あります。

処理結果として戻り値を受け取らないときは引数は括弧で囲わずに記述します。

例)
MsgBox “Hello, World!”, vbInformation

MsgBox関数でも戻り値を受け取って利用する場合には引数は括弧で囲う必要があります。

もうひとつの例外は処理をするのに引数を必要としない関数です。

事例としては現在の日付や時刻を返すDate関数Now関数などです。これらは処理として現在のシステム日付や時刻を返すだけなのであらためて引数を指定する必要がありません。

このように引数を必要としない関数では関数の後の括弧は省略して記述することができます。

例)
Range(“A2”).Value = Now

まとめると関数の記述方法は次のようになります。

基本形(引数を与えて戻り値を受け取る場合)
 関数(引数1, 引数2, 引数3,,,)

戻り値を受け取らない場合
 関数 引数1, 引数2, 引数3,,,

関数と引数の間は半角スペースを空けます。

引数を与えない場合
 関数

関数()と記述しても構いません。

まとめ

今回は関数の基本について紹介しました。

次回から代表的な関数の事例をいくつか紹介していきます。

コメント

タイトルとURLをコピーしました