📊つかえる関数.com

VBA ユーザー定義関数(UDF)LAMBDA + 名前定義

Microsoft 365

VBA を使わずに独自の関数を定義。マクロ有効ブック不要で配布も容易

💡

結論: 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 2016Excel 2019Excel 2021Microsoft 365
VBA ユーザー定義関数(UDF)
LAMBDA + 名前定義--

キーワード

VBAUDFLAMBDAユーザー定義関数365