プログラミングを始めたばかりの方でも分かりやすいように、VBA(Visual Basic for Applications)で使われる「関数」について解説します。関数は、コードの再利用や処理の効率化に非常に役立つツールです。この記事では、関数の構造だけでなく、初めて聞くかもしれない「サブルーチン」などの用語も丁寧に解説していきます。
関数の基本構造
まず、VBAで関数を書くときの基本的な形(構文)を見てみましょう。この構文は、関数がどのように働くかを示すテンプレートのようなものです。
Function 関数名(引数 As 型) As 戻り値の型
' 関数の中で行う処理を書く
関数名 = 結果
End Function
この形を使って、関数を定義します。では、各部分が何を意味するのかを詳しく見ていきましょう。
Functionキーワード
Functionとは、「これから関数を作りますよ!」という宣言です。これを最初に書くことで、VBAはこの後に続くコードが関数の定義であることを理解します。
関数名
関数名は、その関数が何をするかを表す名前です。名前を見ただけで、関数の役割がわかるようにするのが理想的です。たとえば、面積を計算する関数なら CalculateArea、ユーザー名を取得する関数なら GetUserName といった感じで、意味のある名前を付けましょう。
引数リスト
関数に渡すデータ(入力データ)のことを「引数」と呼びます。関数が動くために必要な「材料」だと思ってください。例えば、長方形の面積を計算する場合、「長さ」と「幅」が必要になります。これらは次のように定義します。
(length As Double, width As Double)
ここでは、lengthとwidthが引数です。Doubleは、数値の型(小数も扱える数値)です。
As戻り値の型
関数は何かしらの「結果」を返すことが多いです。この「結果」の種類(型)を指定します。たとえば、計算結果が数値である場合はAs Double、文字列である場合はAs Stringと書きます。
関数の本体
ここでは、関数が実際に行う処理を書きます。たとえば、面積を計算する関数では、「長さ」と「幅」を掛け合わせる処理がここに入ります。
戻り値の設定
関数は計算結果などを返しますが、そのためには「戻り値」を設定する必要があります。関数名に結果を代入することで、関数の戻り値を設定します。
CalculateArea = length * width
これで、計算された面積がCalculateArea関数の結果として返されます。
End Function
End Functionは、関数の終わりを示します。これがあることで、VBAは関数がここで終了したことを理解します。
サブルーチンとは?
「サブルーチン」という言葉は、初めて聞くと少し難しそうに感じるかもしれませんが、実は簡単です。サブルーチンは、特定の処理をまとめた小さなプログラムのことです。サブルーチンは結果を返す必要がないので、関数とは少し違いますが、似たようなものだと考えてもらえれば大丈夫です。
サブルーチンは次のように書きます。
Sub サブルーチン名()
' サブルーチンの中で行う処理を書く
End Sub
サブルーチンは、ボタンを押したときの動作などを実行するのに使われることが多いです。サブルーチンが関数と違うのは、「結果を返さない」という点です。サブルーチンは、単に「何かをする」ことが目的で、返り値はありません。
サブルーチンの例
次に、簡単なサブルーチンの例を見てみましょう。
Sub DisplayMessage()
MsgBox "こんにちは!"
End Sub
この例では、DisplayMessageというサブルーチンが「こんにちは!」というメッセージを表示します。
Dimとは?
Dim は、VBAで変数を宣言するためのキーワードです。変数とは、データ(例えば数値や文字列など)を一時的に保存しておく「箱」のようなものです。Dimを使って、この「箱」を作ることができます。
変数を使うと、計算の途中で得た結果を一時的に保存したり、プログラムの他の部分でそのデータを使うことができます。たとえば、長方形の面積を計算する際に「長さ」と「幅」の値を保存しておくために変数を使います。
Dim の基本的な構文
Dim 変数名 As データ型
- 変数名 変数の名前です。この名前を使って、そのデータにアクセスします。
- データ型
変数が扱うデータの種類を指定します。例えば、
Integer(整数)、Double(小数を含む数値)、String(文字列)などです。
例
Dim length As Double
Dim width As Double
Dim area As Double
この例では、length、width、areaという3つの変数を宣言しています。これらはすべて数値を扱うため、As Doubleを使用しています。
使い方
宣言した変数には、値を代入することができます。
length = 5.0
width = 3.0
area = length * width
ここでは、lengthに5.0、widthに3.0を代入し、areaにその掛け算の結果を保存しています。
変数を使うメリット
-
データの一時保存 計算結果や入力データを保存しておけるため、後で再利用することができます。
-
コードの可読性向上 計算式の中に数字を書く代わりに、意味のある名前を使った変数を利用することで、コードが読みやすくなります。
-
プログラムの柔軟性 変数の値を後から変更することができるため、同じコードを再利用しやすくなります。
関数とサブルーチンを組み合わせた例
次に、関数とサブルーチンを組み合わせて、実際に動くプログラムを作ってみましょう。
Function CalculateArea(length As Double, width As Double) As Double
' 面積を計算して返します
CalculateArea = length * width
End Function
Sub UseAreaFunction()
' 関数を使って面積を計算し、その結果を表示します
Dim result As Double
result = CalculateArea(5, 3)
MsgBox "面積は: " & result & " 平方単位です。"
End Sub
この例では、CalculateArea関数が長方形の面積を計算し、その結果をUseAreaFunctionサブルーチンがメッセージボックスで表示します。
関数とサブルーチンを使うメリット
コードの再利用ができる
関数やサブルーチンを使うと、一度書いたコードを何度も利用することができます。例えば、面積を計算する処理を複数の場所で使用したい場合、関数としてまとめておけば、必要なときにその関数を呼び出すだけで済みます。
コードが読みやすくなる
関数やサブルーチンを使ってコードを整理することで、プログラム全体の見通しが良くなり、理解しやすくなります。特に複雑な処理を複数の小さな関数に分割することで、コードがシンプルになります。
メンテナンスが簡単になる
もし計算方法を変更したい場合、関数の中身を変更するだけで、他の場所に影響を与えずに修正できます。これにより、コード全体のメンテナンスが楽になります。
まとめ
今回は、VBAにおける関数とサブルーチンについて詳しく解説しました。関数は「計算して結果を返す」、サブルーチンは「何かを実行する」という役割を持っています。これらを使うことで、プログラムをシンプルで管理しやすいものにできます。ぜひ、実際に関数やサブルーチンを作成してみて、プログラミングの楽しさを体感してください!