エクセルで受取手形の支払期日を計算する(ユーザー定義関数)VBAを紹介します。
マクロを使って、締日・手形サイト・回収サイトなどから計算させれば、ミスの防止や時短に繋がります。
以前は紙で振り出していた手形も電子化が進み、「でんさい」を中心とした電子手形債権が主流になってきました。
電子化が進んで、いいことづくめですよね。
PCスキル以外の理由で、電子手形債券へ変更しない理由が見つからないですね。
そうなんですけど、やっぱり「受け取った手形の支払期日チェック」は、実務として残るんですよね・・・。
今まで「受取手形の支払期日チェック」ツールとして
・VBA
・数式
を紹介してきましたが、今回は
・ユーザー定義関数
を紹介します。
コピペして使ってみてください。
・ユーザー定義関数を関数として使用できるのはそのファイルのみです。
・ユーザー定義関数をアドイン登録して使用した場合、そのパソコンのみでそのユーザー定義関数は使い回せます。
・同じアドインを登録していない他のパソコンからファイルを閲覧した場合、エラー表示になります。
・ユーザー定義関数を登録したファイルは「マクロ有効ファイル(.xlsm)」で保存しなければいけません。
ユーザー定義関数を作成する
VBAを標準モジュールに書き込んでいきます。
「開発」タブ → Visual Basic (もしくは Alt + F11)
「挿入」タブ → 標準モジュール
出てきたウィンドウにVBAを記述する。
本日を基準に、受け取った手形の請求日を計算する
Function 請求日(締日 As Long, 入金サイト月 As Long) As Date
Dim m As Date
If 締日 = 99 Then
m = DateAdd(“m”, Month(Date) – 入金サイト月, Date)
請求日 = WorksheetFunction.EoMonth(m, -1)
Else
m = DateAdd(“m”, Month(Date) – 入金サイト月 – 1, Date)
請求日 = Format(m, “yyyy/mm/” & 締日)
End If
End Function
締日、手形サイト、請求日から手形の支払期日を計算する
Function 期日(締日 As Long, 手形サイト As Long, 請求日 As Date)As Date
Dim m, d As Long
Dim D1 As Date
If 締日 = 99 Then
m = 手形サイト \ 30
d = 手形サイト Mod 30
期日 = WorksheetFunction.EoMonth(請求日, m) + d
Else
m = (締日 + 手形サイト) \ 30
d = (締日 + 手形サイト) Mod 30
D1 = WorksheetFunction.EoMonth(請求日, -1)
期日 = WorksheetFunction.EoMonth(D1, m) + d
End If
End Function
数式をセルに入力する
E2の数式
=請求日(A2,C2)
F2の数式
=期日(A2,B2,E2)
結果
ユーザー定義関数の情報を登録し、関数の検索ができるようにする
関数のボタンを押したときに、作成したユーザー定義関数を検索できるようにしたり、数式の入力ガイドが出るようにしたりします。
関数ボタンを押して
関数を検索できるようにしたり
数式の入力ガイドが出たりするようにしていきます。
こうすることにより作成したユーザー定義関数を、誰でも数式を入力しやすいものにしていきます。
ユーザー定義関数を登録するVBA
F11を開き、「ThisWorkbook」をクリックし、VBAを記述するウインドウを開く
プルダウンから「Worknook」と「Open」を選択する
Private Sub Workbook_Open()
Application.MacroOptions Macro:=”請求日”, _
Description:=”本日を基準として” & Chr(13) & “締日と入金サイトから請求日を求めます”, _
Category:=”財務”
Application.MacroOptions Macro:=”期日”, _
Description:=”締日、手形サイト、請求日から” & Chr(13) & “手形の支払期日を求めます”, _
Category:=”財務”
End Sub
一度ファイルを保存し、開くと、関数の中に登録されます。
コメント