はじめに
VBAのプロシージャには、これまで見てきた Sub の他に、もう一つ「Function」があります。Sub と Function の最大の違いは、Function は処理の結果として「戻り値(返り値)」を返すことができる点です。
Function を自作することで、Excelの SUM 関数や VLOOKUP 関数のようによく使う計算や処理を、再利用可能な「オリジナル関数」として部品化できます。
この記事では、引数を受け取り、処理結果を戻り値として返す、基本的な Function の作り方と使い方を解説します。
引数を持つFunctionのサンプルコード
この例では、税抜きの価格と税率を引数として受け取り、税込価格を計算して返す CalculatePriceWithTax というオリジナル関数を作成します。
完成コード
' === 税込価格を計算するFunction ===
' 2つの引数を受け取り、Currency(通貨型)の値を返す
Function CalculatePriceWithTax(basePrice As Double, taxRate As Double) As Currency
' Function名と同じ名前の変数に値を代入すると、それが戻り値になる
CalculatePriceWithTax = basePrice * (1 + taxRate)
End Function
' === 作成したFunctionを呼び出すSubプロシージャ ===
Sub Test_CalculateFunction()
Dim priceA As Currency
Dim priceB As Currency
' --- マクロ内からFunctionを呼び出し、戻り値を変数に格納 ---
priceA = CalculatePriceWithTax(1000, 0.1) ' 1000円, 税率10%
priceB = CalculatePriceWithTax(basePrice:=5000, taxRate:=0.08) ' 5000円, 税率8%
' --- 結果をシートに出力 ---
With Worksheets("Sheet1")
.Range("B2").Value = "税込価格A:"
.Range("C2").Value = priceA
.Range("B3").Value = "税込価格B:"
.Range("C3").Value = priceB
End With
End Sub
コードの解説
Function CalculatePriceWithTax(...) As Currency
これが Function の定義です。
Function ... End Function: プロシージャの種類がFunctionであることを示します。(basePrice As Double, taxRate As Double):Subと同様に、処理に必要な値を引数として受け取ります。As Currency:Functionの最後にデータ型を指定すると、そのFunctionが返す戻り値のデータ型を定義できます。ここでは、お金を扱うのに適したCurrency(通貨型)を指定しています。
CalculatePriceWithTax = basePrice * (1 + taxRate)
Function の中で、Function 自身と同じ名前の変数に値を代入すると、その値が Function の戻り値になります。これが Function の最も重要なルールです。 計算結果(1000 * (1 + 0.1) = 1100)が、CalculatePriceWithTax という名前の特別な変数に格納され、呼び出し元に返されます。
priceA = CalculatePriceWithTax(1000, 0.1)
Sub プロシージャの中から Function を呼び出している部分です。
CalculatePriceWithTax(1000, 0.1)を実行すると、Functionが計算結果の1100を返します。- その戻り値が、
=を通じて変数priceAに格納されます。
Sub と Function の使い分け
Sub と Function のどちらを使うべきか迷ったときは、以下のように考えると分かりやすいです。
Sub: 何らかの「操作」をさせたいとき。(例: シートを追加する、セルの書式を設定する、ファイルを保存する)Function: 何らかの「値を取得」したいとき。(例: 税込価格を計算する、特定の条件に合うセルのアドレスを探す、文字列を加工する)
まとめ
今回は、VBAで処理を部品化し、再利用性を高めるための Function の作り方を解説しました。
Functionは、処理結果として戻り値を返すことができるプロシージャ。Function ... As データ型で、戻り値の型を定義する。Function名 = 値の形で、戻り値を設定する。
複雑な計算や、繰り返し登場する判定処理などを Function として独立させておくことで、メインのコードがシンプルになり、プログラム全体の見通しが格段に良くなります。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
