こんにちは、なかぜんです。
Accessで日々の業務をこなしていると、「またこの計算か…」「毎回このチェック作業、面倒だな…」と感じたことはありませんか?
そんなときに便利なのが「カスタム関数(ユーザー定義関数)」です!
よく使う処理を関数としてまとめておけば、どのフォームやクエリからでも使い回しができて、作業効率がグッと上がりますよ。
カスタム関数とは?
Accessの「標準関数」では足りない処理を、自分でVBAコードとして定義できるのがカスタム関数です。
例えば「数字のゼロ埋め」「日付の形式統一」「文字列の一部抜き出し」など、業務に合わせて自由に関数を作成できます。
モジュールで関数を定義しよう
まずはカスタム関数を作成する「標準モジュール」を用意します。
' 例:社員番号を5桁にゼロ埋めする関数
Public Function FormatEmployeeID(empID As Long) As String
FormatEmployeeID = Format(empID, "00000")
End Function
使い方: フォームのコントロールソースやクエリの式で=FormatEmployeeID([社員ID])
のように呼び出します。
画面イメージ
以下のように、クエリのフィールドに直接使えます。

よくあるミスと注意点
- 関数名のスペルミス(呼び出すときに間違いやすい)
- モジュールが「標準モジュール」になっていないと関数が認識されません
- クエリ内で使う場合、引数にNullが含まれるとエラーになることがあります(Nz関数などで対処)
応用:日付フォーマットやチェックロジックも関数に!
' 和暦に変換する例
Public Function ToWareki(targetDate As Date) As String
ToWareki = Format(targetDate, "gggee年mm月dd日")
End Function
' 入力された文字列が英数字だけかチェック
Public Function IsAlphaNumOnly(strInput As String) As Boolean
Dim i As Integer
For i = 1 To Len(strInput)
If Not Mid(strInput, i, 1) Like "[A-Za-z0-9]" Then
IsAlphaNumOnly = False
Exit Function
End If
Next
IsAlphaNumOnly = True
End Function
こうした関数を用意しておけば、入力チェックやデータ整形もラクラクです♪
まとめ:カスタム関数で「自分専用のAccess」に
今回はAccessでカスタム関数を作成する方法と、実務で使える具体例をご紹介しました。
- よく使う処理を関数化することで、作業効率が大幅アップ
- フォームやクエリ、レポートでも再利用OK
- VBAの基本的な書き方に慣れる練習にもなる
「これ、毎回やってるな」と思った処理があったら、まずは一つ関数にしてみましょう。きっとAccessがもっと便利になりますよ♪
