プログラミングにおいて「関数」は、ある特定のタスクを実行するために書かれた命令の集まりです。VBA
(Visual 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 プロシージャ メッセージボックスを表示するだけのシンプルな処理。
Sub ShowMessage()
MsgBox "Hello, World!"
End Sub
- Function プロシージャ 2つの数値の合計を返し、その合計をさらに他の計算に利用する。
Function MultiplyNumbers(num1 As Integer, num2 As Integer) As Integer
MultiplyNumbers = num1 * num2
End Function
まとめ
VBA
の関数は、コードを整理し、効率よく作業を行うために欠かせないものです。Sub
プロシージャは、何かを実行するために使い、Function
プロシージャは結果を返すために使います。どちらを使うべきかは、その作業が「結果を必要とするかどうか」で決まります。