セルから使えるユーザー定義関数を作る
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を標準モジュールに作り、セルの数式から長方形の面積を求めます。
入力・開始時
A1=6・B1=4、C1へ=RectangleArea7041(A1,B1)
実行する処理
UDFが引数を検証し、幅×高さを返す
結果
C1は24。負の寸法なら#NUM!
入力するA1~C1は空いた練習セルを使います。関数本体から別のセルへ書き込みません。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[標準モジュール]の空のモジュール先頭へコード全体を貼ります。
- 2
Excel画面へ戻り、練習用シートの空いたA1へ6、B1へ4を入力します。
- 3
C1へ=RectangleArea7041(A1,B1)と入力してEnterを押します。F5でFunctionを実行する方法ではありません。
- 4
C1に24が表示されます。A1を-1に変えると#NUM!になります。計算方法が手動ならF9で再計算します。