【VBA】手形の支払期日を計算する(ユーザー定義関数)

エクセルで受取手形の支払期日を計算する(ユーザー定義関数)VBAを紹介します。

マクロを使って、締日・手形サイト・回収サイトなどから計算させれば、ミスの防止や時短に繋がります。

以前は紙で振り出していた手形も電子化が進み、「でんさい」を中心とした電子手形債権が主流になってきました。

電子化が進んで、いいことづくめですよね。

・紛失のリスクが無い
・郵送や取立ての手間が省ける
・収入印紙→不要
・領収書→不要
・1件の電子手形債権を複数に分割できる
・電子データとして、情報を取り込みできる

パソコン・ネット環境が必要
手数料が若干高い

PCスキル以外の理由で、電子手形債券へ変更しない理由が見つからないですね。

そうなんですけど、やっぱり「受け取った手形の支払期日チェック」は、実務として残るんですよね・・・。

今まで「受取手形の支払期日チェック」ツールとして
・VBA
・数式
を紹介してきましたが、今回は
・ユーザー定義関数
を紹介します。

コピペして使ってみてください。

・ユーザー定義関数を関数として使用できるのはそのファイルのみです。
・ユーザー定義関数をアドイン登録して使用した場合、そのパソコンのみでそのユーザー定義関数は使い回せます。
・同じアドインを登録していない他のパソコンからファイルを閲覧した場合、エラー表示になります
・ユーザー定義関数を登録したファイルは「マクロ有効ファイル(.xlsm)」で保存しなければいけません。

目次

ユーザー定義関数を作成する

VBAを標準モジュールに書き込んでいきます。

「開発」タブ → Visual Basic (もしくは Alt + F11)

「挿入」タブ → 標準モジュール

出てきたウィンドウにVBAを記述する

本日を基準に、受け取った手形の請求日を計算する

月末日付は「99」とします。

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

=請求日(締日,入金サイト月)  結果を日付で返す

締日が月末だったら
    m=本日から『今月-「入金サイト月」』ヶ月前の日
    請求日=mの前月末
締日が月末以外
    m=本日から『今月-「入金サイト月」-1』ヶ月前の日
    請求日=mの年月+締日

締日、手形サイト、請求日から手形の支払期日を計算する

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

=期日(期日,手形サイト,請求日) 結果を日付で返す

締日が月末だったら
    m=手形サイト/30の商
    d=手形サイト/30の余り

    期日=請求日からmヶ月後+d
締日が月末以外
    m=(締日+手形サイト)/30の商
    d=(締日+手形サイト)/30の余り
    D1=請求日から1ヶ月前の月末

    期日=D1からmヶ月後+d

数式をセルに入力する

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

ワークブックを開いた時に実行する

    マクロの名前:請求日
    説明:本日を基準として
            締日と入金サイトから請求日を求めます
    関数の分類:財務

    マクロの名前:期日
    説明:締日、手形サイト、請求日から
            手形の支払期日を求めます
    関数の分類:財務

一度ファイルを保存し、開くと、関数の中に登録されます。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

この記事を書いた人

子育てに奮闘しながらも、再びガッツリ走り込める日を夢見るフルタイム会社員。

コメント

コメントする

CAPTCHA


目次
閉じる