VBA ユーザー定義関数(UDF)→LAMBDA + 名前定義
Microsoft 365VBA を使わずに独自の関数を定義。マクロ有効ブック不要で配布も容易
💡
結論: LAMBDA + 名前定義 への移行をおすすめします
VBA を使わずに独自の関数を定義。マクロ有効ブック不要で配布も容易
書き換え前後の比較
✕Before: VBA ユーザー定義関数(UDF)
-- VBA で定義(標準モジュール)
Function 消費税込み(金額 As Double, 税率 As Double) As Double
消費税込み = 金額 * (1 + 税率)
End Function
-- 問題点:
-- ・マクロ有効ブック(.xlsm)が必要
-- ・セキュリティ警告が出る
-- ・配布先でマクロを有効にしてもらう必要✓After: LAMBDA + 名前定義
-- 名前の管理で定義 -- 名前: 消費税込み -- 参照範囲: =LAMBDA(金額,税率,金額*(1+税率)) -- セルで使用(VBA と同じ使い方) =消費税込み(A2,0.1) -- 改善点: -- ・.xlsx 形式で保存できる -- ・セキュリティ警告が出ない -- ・配布が容易
✓ LAMBDA + 名前定義 のメリット
✓
マクロを有効にせずに独自関数を使える
✓
ブックを .xlsx 形式で保存できる(.xlsm 不要)
✓
セキュリティ警告が出ない
✓
配布先でマクロを有効にしてもらう必要がない
⚠️ 注意点
⚠️
Excel 2021でも使用不可(Microsoft 365 のみ)
⚠️
複雑なロジック(API呼び出し、外部連携)は VBA の方が適切
⚠️
再帰やループは REDUCE、SCAN などの関数を使う必要がある
⚠️
デバッグが VBA より難しい
バージョン対応状況
| 関数 | Excel 2016 | Excel 2019 | Excel 2021 | Microsoft 365 |
|---|---|---|---|---|
| VBA ユーザー定義関数(UDF) | ✓ | ✓ | ✓ | ✓ |
| LAMBDA + 名前定義 | ✓ | - | - | ✓ |
キーワード
VBAUDFLAMBDAユーザー定義関数365