【VBA】引数を持つFunction(関数)の作り方と使い方|戻り値の返し方

目次

はじめに

VBAのプロシージャには、これまで見てきた Sub の他に、もう一つ「Function」があります。SubFunction の最大の違いは、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 に格納されます。

SubFunction の使い分け

SubFunction のどちらを使うべきか迷ったときは、以下のように考えると分かりやすいです。

  • Sub: 何らかの「操作」をさせたいとき。(例: シートを追加する、セルの書式を設定する、ファイルを保存する)
  • Function: 何らかの「値を取得」したいとき。(例: 税込価格を計算する、特定の条件に合うセルのアドレスを探す、文字列を加工する)

まとめ

今回は、VBAで処理を部品化し、再利用性を高めるための Function の作り方を解説しました。

  • Function は、処理結果として戻り値を返すことができるプロシージャ。
  • Function ... As データ型 で、戻り値の型を定義する。
  • Function名 = 値 の形で、戻り値を設定する。

複雑な計算や、繰り返し登場する判定処理などを Function として独立させておくことで、メインのコードがシンプルになり、プログラム全体の見通しが格段に良くなります。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次