HOME > 即効テクニック > AccessVBA > 日付・文字列操作・演算 > 全体の数量から「箱数」や「バラ数」を計算する関数

即効テクニック

日付・文字列操作・演算

全体の数量から「箱数」や「バラ数」を計算する関数

(Access 97)
● 概要 ●
全体の数量から、特定の入数によって箱数とバラ数を計算する関数を説明します。


● 準備 ●
新規標準モジュールに以下のプロシージャを記述して下さい。


● サンプルコード ●
'Package関数用の列挙型パラメータ
Public Enum UnitType
    pkDozen = 12        'ダース
    pkHalfDozen = 6     '半ダース
    pkCarton = 10       'カートン
End Enum

'Package関数の戻り値用のユーザー定義型
Private Type Pac
    Box    As Long
    Number As Long
End Type


'箱数(単位数)を算出する関数
'【引数説明】
'Amount     箱数を算出する元になる全体数量
'Unit       1箱(1単位)の数。入数
'【戻り値説明】
'Box        箱数
'Number     バラ数
Public Function Package(Amount As Long, Unit As UnitType) As Pac
    Package.Box = Amount \ Unit
    Package.Number = Amount Mod Unit
End Function


'動作確認用プロシージャ
Private Sub TestPackage()
    Dim A As Pac
    A = Package(88, pkDozen)
    Debug.Print A.Box
    Debug.Print A.Number
End Sub


● 動作確認 ●
動作確認用プロシージャ「TestPackage」を実行し、イミディエイトウィンドウに「7」と「4」が表示されていることを確認して下さい。

● 詳細 ●
サンプルでは引数UnitにEnumステートメントで宣言した定数を使っています。
今回は一般的だと思われるダース・半ダース・カートンが定数として宣言されていますが、数値を指定することも可能です。
また、戻り値にはユーザー定義型Pacが使用されていますので、関数の戻り値を参照する際には注意が必要です。

実際の処理は非常に単純で、\演算子を使って剰余を除いた整数部分を取得し、Mod演算子を使って剰余部分を取得しています。


● 注意 ●
Access97にはEnumステートメントが実装されていません。ですからAccess97以前のバージョンでサンプルを実行する場合、Enumブロックを削除し、引数Unitの変数型をLong型に関数呼び出し時の引数ClearTypeは整数値で指定して下さい。