前二日有人討論條碼檢核程式,本人發現其命題方式,稍為複雜,茲將較為精簡程式臚列如下,歡迎指正!
'=========================================================================================
' 目 的: EAN_13條碼檢查程式
' 假 設:
' 效 果:
' 輸 入 值: ByVal strBarcode As String
' 傳 回 值: blnBarcodeCheck As Boolean
' 參考資料: 李媛媛、余文俊編著《條碼解碼器的設計》第10章EAN_13碼解碼程式
'
' 日 期 By COMMENT
' ---------- ---- -------
' 2000/01/13 Chris Juang 來自: 210.68.97.130
' 2000/01/18 SY 改寫
'=========================================================================================
Public Function blnBarcodeEAN13(ByVal strBarcode As String) As Boolean
Dim intX As Integer ' 計數變數
Dim intY As Integer ' 計數變數
Dim intEvenSum As Integer ' 偶數(Even Number)和變數
Dim intOddSum As Integer ' 奇數(Odd Numbe)和變數
Dim intSum As Integer ' 合計變數
For intX = 1 To 12
intY = CInt(Mid(strBarcode, intX, 1))
If intX Mod 2 <> 0 Then
intOddSum = intOddSum + intY
Else
intEvenSum = intEvenSum + intY
End If
Next intX
' 偶數和乘三之積
intEvenSum = intEvenSum * 3
' 奇數和 + 偶數和乘三之積 + 檢核碼
intSum = intOddSum + intEvenSum + CInt(Mid(strBarcode, 13, 1))
' 驗證是否為10的倍數
' 正確者傳回 TURE之值
' 不正確者傳回 FALSE之值
If (intSum Mod 10) = 0 Then
blnBarcodeEAN13 = True
Exit Function
Else
MsgBox "條碼數字有誤,請查明後再行輸入。"
blnBarcodeEAN13 = False
Exit Function
End If
End Function
'呼叫範例:
'
'Private Sub txt_LostFocus()
' If blnBarcodeEAN13 = False Then
' txt.SetFocus
' End If
'End Sub