VBA ユーザー定義関数(UDF)化テンプレート集
「黄金100パターン」を セル関数として直接呼び出せる形 にする方法です。
これで、シート上で =関数名(...) と入力すれば即座に結果が返るようになります。
基本構造
' ===== Module: UDFUtils =====
Option Explicit
' 数値を税込に変換する UDF
Public Function AddTax(price As Double, Optional taxRate As Double = 0.1) As Double
AddTax = price * (1 + taxRate)
End Function
' 日付から「年」を返す UDF
Public Function GetYear(d As Date) As Integer
GetYear = Year(d)
End Function
' 日付から「月」を返す UDF
Public Function GetMonth(d As Date) As Integer
GetMonth = Month(d)
End Function
' 日付から「日」を返す UDF
Public Function GetDay(d As Date) As Integer
GetDay = Day(d)
End Function
VB👉 Excel セルで直接
=AddTax(1000)→ 1100=GetYear(A2)→ 2025=GetMonth(A2)→ 11=GetDay(A2)→ 28
売上表用 UDF
' 売上表:税込金額
Public Function SalesTax(price As Double) As Double
SalesTax = price * 1.1
End Function
' 売上表:差分計算
Public Function SalesDiff(currVal As Double, prevVal As Double) As Double
SalesDiff = currVal - prevVal
End Function
VB👉 セルで
=SalesTax(B2)→ 税込金額=SalesDiff(C3,C2)→ 前回との差分
勤怠表用 UDF
' 勤怠表:遅刻判定
Public Function IsLate(startTime As Date) As Boolean
IsLate = (Hour(startTime) >= 9 And Minute(startTime) > 0)
End Function
' 勤怠表:勤務時間計算
Public Function WorkHours(startTime As Date, endTime As Date) As Double
WorkHours = (endTime - startTime) * 24
End Function
VB👉 セルで
=IsLate(B2)→ TRUE/FALSE=WorkHours(C2,D2)→ 勤務時間(時間数)
在庫表用 UDF
' 在庫表:カテゴリ分類
Public Function StockCategory(itemName As String) As String
Select Case itemName
Case "りんご", "みかん", "バナナ"
StockCategory = "果物"
Case "牛乳", "チーズ"
StockCategory = "乳製品"
Case Else
StockCategory = "その他"
End Select
End Function
' 在庫表:異常値判定
Public Function IsNegativeStock(stockVal As Double) As Boolean
IsNegativeStock = (stockVal < 0)
End Function
VB👉 セルで
=StockCategory(A2)→ 果物 / 乳製品 / その他=IsNegativeStock(B2)→ TRUE/FALSE
✅ まとめ
- UDF化 →
Public Function 関数名(...) As 型で定義 - セル関数として利用可能 →
=関数名(引数) - 業務別ライブラリ化 → 売上表・勤怠表・在庫表に特化した関数を追加
- 共通関数 → 日付分解・差分計算・判定処理などを汎用化
💡 これで「黄金100パターン」を セル関数として直接呼び出せる UDFライブラリ に変換できました。


