プログラミングにおいて「関数」は、ある特定のタスクを実行するために書かれた命令の集まりです。VBAVisual Basic for Applications)でも、この関数が重要な役割を果たします。しかし、初めてVBAに触れる方にとっては、関数の使い方や選び方が少し難しく感じるかもしれません。

この記事では、VBAで使う関数について、初心者でも理解しやすいように詳しく解説します。また、具体的な使用例や、どの関数を選べば良いかについても説明しますので、ぜひ参考にしてください。

関数とは?

まず、関数が何なのかを簡単に説明します。関数とは、**何か特定の作業を行うための「命令のまとまり」**です。たとえば、「10を2倍にする」といった簡単な計算でも、プログラムとして書けばその作業は関数となります。

関数のメリット

  • 繰り返し使える 一度関数を作れば、何度でもその作業を呼び出して使うことができます。
  • コードを整理できる 長いプログラムも、関数を使うことで、見通しが良くなり、理解しやすくなります。
  • メンテナンスが簡単 関数を変更するだけで、その関数を使っているすべての部分が更新されます。

VBAにおける関数の種類

VBAでは、主に2種類の関数があります。それが「Sub プロシージャ」と「Function プロシージャ*」です。この2つをうまく使い分けることで、効率的なプログラムを作成することができます。

Sub プロシージャとは?

Sub プロシージャは、**「何かを実行する」**ために使う関数です。この関数は、結果を返さずに、ただ作業を行います。

使用例

  • メッセージボックスを表示するだけのシンプルな処理 「メッセージを表示して終了する」という単純な作業を実行します。
  • セルの値を変更する あるセルに値を入力したり、書式を設定したりします。

Sub プロシージャの構文

Sub プロシージャ名()
    ' ここに命令を書きます
End Sub

以下のSub プロシージャは、セルA1に「Hello」という文字を入力します。

Sub WriteMessage()
    Range("A1").Value = "Hello"
End Sub

選び方のポイント

  • 何かを実行するだけで結果が不要な場合は、Sub プロシージャを選びます。
  • 「これをやって終わり」という処理に向いています。

Function プロシージャとは?

Function プロシージャは、**「計算や判定を行い、その結果を返す」**ための関数です。関数を呼び出すと、結果が返されます。この結果は、他の計算や処理に使うことができます。

使用例

  • 合計を計算する 2つの数値を足して、その合計を返す場合などに使います。
  • *条件を判定する ある条件が満たされているかをチェックし、その結果を返す場合などに使います。

Function プロシージャの構文

Function 関数名(引数) As データ型
    ' 計算や処理を行います
    関数名 = 結果
End Function

以下のFunction プロシージャは、2つの数を足してその結果を返します。

Function AddNumbers(num1 As Integer, num2 As Integer) As Integer
    AddNumbers = num1 + num2
End Function

この関数は、AddNumbers(3, 4)と呼び出すと7を返します。

選び方のポイント

  • 何かを計算して、その結果が必要な場合は、Function プロシージャを選びます。
  • Excelのセルに直接入れて使うこともできるので、計算をしたい場合に非常に便利です。

Sub プロシージャとFunction プロシージャの選び方

Sub プロシージャFunction プロシージャの違いを押さえておくと、どちらを使うべきか迷うことが少なくなります。

  • Sub プロシージャを使う場面

    • ただ作業を実行するだけのとき(例:セルに値を入力する、メッセージを表示する)
    • 結果が不要な処理
  • Function プロシージャを使う場面

    • 計算結果や判定結果を利用したいとき(例:合計を計算する、条件をチェックする)
    • 結果を返して他の処理に使いたいとき

比較例

  • Sub プロシージャ メッセージボックスを表示するだけのシンプルな処理。
%%{init: {'theme':'neutral'}}%% flowchart TD A[開始] -->B[処理を実行] B -->C[完了]
Sub ShowMessage()
    MsgBox "Hello, World!"
End Sub
  • Function プロシージャ 2つの数値の合計を返し、その合計をさらに他の計算に利用する。
%%{init: {'theme':'neutral'}}%% flowchart TD D[開始] -->E[処理を実行] E -->F[※結果を返す] F -->G[完了]
Function MultiplyNumbers(num1 As Integer, num2 As Integer) As Integer
    MultiplyNumbers = num1 * num2
End Function

まとめ

VBAの関数は、コードを整理し、効率よく作業を行うために欠かせないものです。Sub プロシージャは、何かを実行するために使い、Function プロシージャは結果を返すために使います。どちらを使うべきかは、その作業が「結果を必要とするかどうか」で決まります。