*当ブログではアフェリエイト広告を利用しています。

VBA

【VBA】関数の活用!より強力で再利用可能なコードを作成しよう!

VBAで関数
momeq
モー
モー

今回はVBAで関数を作っていきます。自作関数を作成することで、自由に使いたいコードを再利用することができます。

プログラミングにおける関数とは、一連の手続きや計算を一つの単位としてまとめたものを言います。

一度定義すれば何度でも呼び出して利用することができるので、何度も使われている部分を抜き取って関数かすることがよくあります。

それぞれの関数は、特定のタスク(機能)を持っていて、必要な入力(引数)を受け取ると、結果(戻り値)を返します。

この原理は、Visual Basic for Applications(VBA)においても同じです。

関数を理解し、適切に使用することで、VBAプログラムはより効率的に、そして可読性の高いものになります。

それでは、VBAの関数について深く掘り下げてみましょう。

関数とは何か?

関数の基本

関数とは、特定の値(引数)を入力として受け取り、ある種の処理を行った結果(戻り値)を返す一連のプログラム文のことです。

関数は、繰り返し行われるタスクや複雑な計算を一箇所にまとめ、必要に応じて呼び出すことができます。

VBAでの関数は一般的に以下の形式で定義されます。

Function FunctionName(arguments) As ReturnType
    ' 実行する処理
End Function
  • Function:VBAに関数を定義していることを示すキーワード。
  • FunctionName:関数の名前。この名前は一意でなければならず、VBAの他の部分からこの名前を使って関数を呼び出す。
  • arguments:ここには、関数が受け取る入力(引数)が記述される(無い場合もある)。それぞれの引数には名前とデータ型があり、カンマで区切られる。
  • As ReturnType:関数の戻り値のデータ型を指定。IntegerStringBooleanVariantなど
  • End Function:関数定義の終了を示す。

関数内の処理が完了したら、関数名を使って結果を返します。(リターンと呼びます)

平均を計算し返す関数

例えば、次の関数は2つの数値の平均を計算し、その結果を返します。

'関数名に値を渡すことで、リターンできる
Function Average(num1 As Double, num2 As Double) As Double
    Average = (num1 + num2) / 2
End Function

上記コードでは、num1とnum2を足して2で割った数値、つまり、平均値を返す(リターンする)関数となります。

関数の利用

作成した関数は、VBAの他の部分から呼び出すことができます。

以下のサブプロシージャは、先ほど定義したAverage関数を呼び出し、結果をメッセージボックスで表示します。

Sub ShowAverage()
    Dim num1 As Double
    Dim num2 As Double
    Dim average As Double

    num1 = 10.5
    num2 = 20.3

    average = Average(num1, num2)

    MsgBox "The average of " & num1 & " and " & num2 & " is " & average
End Sub

SubとFunction

ニャー
ニャー

VBAではSubとFunctionのどちらでも関数と言われる再利用可能な部品が作れるんだにゃ。違いを見ていくんだにゃ。

Sub(サブルーチン)とFunction(関数)の両方とも再利用が可能です。

どちらも一連のVBAステートメントをまとめて名前をつけることで、それを何度でも呼び出すことができるようになっています。

しかし、その役割と使い方には微妙な違いがあります。

Sub

Subはサブルーチンの略で、一連のVBAのステートメントを実行するために使われます。

サブルーチンは、特定のタスクを実行するためのコードのブロックで、そのタスクを繰り返し行う場合や、コードをより読みやすくするために利用されます。

しかし、Subは戻り値を返すことができません。

サブルーチンは次の形式で定義されます。

Sub SubName(arguments)
    ' 実行するステートメント
End Sub

例えば、次のコードは名前を引数として受け取り、メッセージボックスで挨拶を表示します。

Sub SayHello(name As String)
    MsgBox "Hello, " & name
End Sub

見ての通り、Subでは戻り値は返せません。

Function

一方、Functionは、先ほど見た通り、一つ以上の入力(引数)を受け取り、何らかの処理を行った後に結果(戻り値)を返すために使われます。

戻り値を返せる点から、一般的に関数はこちらを指します。

関数は次の形式で定義されます。

Function FunctionName(arguments) As ReturnType
    ' 実行するステートメント
    ' 戻り値を返す
End Function

例えば、次のSquare関数は、引数として数値を受け取り、その二乗を返します。

Function Square(num As Double) As Double
    Square = num * num
End Function

SubとFunctionの違いと使い分け

要するに、主な違いはSubが値を返さないのに対し、Functionが値を返すという点です。

どちらを使用するかは、目的によります。

ある処理を行い、何かの結果を返す必要がある場合にはFunctionを使用し、特定のタスクを実行するだけで結果を返す必要がない場合にはSubを使用します。

モー
モー

VBAを体系的に学びたい場合、本で学ぶことをお勧めしています。

kindle unlimited(キンドルアンリミテッド)であれば、いくつかのVBA関係の本を無料で読むこともできますよ。

Kindle Unlimited

記事URLをコピーしました