JAN バーコードのチェックディジット算出方法 |
対象バージョン : 97, 2000, 2002, 2003
最終更新日 : 2016/09/18 (オリジナル作成日
: 1999/04/21)
概 要
JAN8, JAN13 バーコードで付加されているチェックディジットを算出するユーザー定義関数です。
構 文
JANCD(String)
解 説
JANCD 関数の戻り値はバリアント型 (Variant)です。
JANCD 関数では次の引数を使用します。
引 数 | 内 容 |
---|---|
String | チェックディジットを算出するコードを示す文字列式 |
引数に与えられた文字列式からチェックディジットが算出できない場合、JANCD 関数は Null を返します。
チェックディジットが算出できた場合、JANCD 関数は次の値を返します。
○引数の文字列が 7 または 8 桁の場合 JAN8
としてチェックディジットを算出
7 桁の場合、8
桁目にチェックディジットを付加して返します。
8 桁の場合、8
桁目を算出したチェックディジットで置き換えて返します。
○引数の文字列が 12 または 13 桁の場合 JAN13
としてチェックディジットを算出
12 桁の場合、13
桁目にチェックディジットを付加して返します。
13 桁の場合、13
桁目を算出したチェックディジットで置き換えて返します。
【例】
呼出 | 返される値 |
JANCD("1234567") | "12345670" |
JANCD("12345678") | "12345670" |
ユーザー定義関数
Public Function JANCD(argCode As Variant) As Variant Dim strCode As String Dim intDigit As Integer Dim intPos As Integer Dim intCD As Integer
If IsNull(argCode) Then Exit Function If Not IsNumeric(argCode) Then Exit Function
Select Case Len(argCode) Case 7, 8 strCode = Left(argCode, 7) For intPos = 1 To 7 Step 2 intDigit = intDigit + CInt(Mid(strCode, intPos, 1)) Next intDigit = intDigit * 3 For intPos = 2 To 6 Step 2 intDigit = intDigit + CInt(Mid(strCode, intPos, 1)) Next
Case 12, 13 strCode = Left(argCode, 12) For intPos = 2 To 12 Step 2 intDigit = intDigit + CInt(Mid(strCode, intPos, 1)) Next intDigit = intDigit * 3 For intPos = 1 To 11 Step 2 intDigit = intDigit + CInt(Mid(strCode, intPos, 1)) Next
Case Else Exit Function End Select
intCD = intDigit Mod 10 If intCD <> 0 Then intCD = 10 - intCD End If
JANCD = strCode & Format(intCD) End Function