← コード一覧へ戻る
実務プロシージャ

セルから使えるユーザー定義関数を作る

Public Functionを標準モジュールに作り、セルの数式から長方形の面積を求めます。

実行前に確認

  • コードはシートやThisWorkbookのモジュールではなく標準モジュールに置きます。モジュール名を関数名と同じにしません。
  • セルから呼ぶUDFは値を返す計算に限定し、他のセルの書き換え、シート追加、MsgBoxなどの操作を入れないようにします。
  • マクロを無効にした環境やExcel for the webではVBA関数を実行できません。数値以外を渡すと#VALUE!などになる場合があります。
  • Excel実機での動作は未確認です。コピーした練習用ブックで試してください。

1サンプルコード

Option Explicit

Public Function RectangleArea7041(ByVal width As Double, _
                                   ByVal height As Double) As Variant
    If width < 0 Or height < 0 Then
        RectangleArea7041 = CVErr(xlErrNum)
        Exit Function
    End If
    RectangleArea7041 = width * height
End Function

図で見るセルから使えるユーザー定義関数を作るの流れ

イメージ図

Public Functionを標準モジュールに作り、セルの数式から長方形の面積を求めます。

  1. 入力・開始時

    A1=6・B1=4、C1へ=RectangleArea7041(A1,B1)

  2. 実行する処理

    UDFが引数を検証し、幅×高さを返す

  3. 結果

    C1は24。負の寸法なら#NUM!

入力するA1~C1は空いた練習セルを使います。関数本体から別のセルへ書き込みません。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[標準モジュール]の空のモジュール先頭へコード全体を貼ります。

  2. 2

    Excel画面へ戻り、練習用シートの空いたA1へ6、B1へ4を入力します。

  3. 3

    C1へ=RectangleArea7041(A1,B1)と入力してEnterを押します。F5でFunctionを実行する方法ではありません。

  4. 4

    C1に24が表示されます。A1を-1に変えると#NUM!になります。計算方法が手動ならF9で再計算します。

使っている機能の公式ドキュメント(Microsoft Learn)