JAN バーコードのチェックディジット算出方法 Hit Counter

対象バージョン : 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
 

目次へ戻る