包括最后一位校验码哪位大大帮帮我?假设 69096121121 一共十二位,在TEXT控件中 显示出 6909612112115 (最后一位5是通过条形码公式计算出来的)--------------------------
条形码公式,偶数位 相加 再乘 3
从第三位起奇数位相加
以上两者再加
如果和正好是10的倍数,则用倍数减4 得最后一位 130 13-4=9
否则取10整数倍 相减 得最后一位 128 130-128=2
条形码公式,偶数位 相加 再乘 3
从第三位起奇数位相加
以上两者再加
如果和正好是10的倍数,则用倍数减4 得最后一位 130 13-4=9
否则取10整数倍 相减 得最后一位 128 130-128=2
Dim i As Integer
Dim intSum1 As Integer, intSum2 As IntegerstrBarcode = "690961211211"For i = 1 To 12
If (i Mod 2) = 0 Then
intSum1 = intSum1 + Val(Mid(strBarcode, i, 1))
End If
If i Mod 2 Then
intSum2 = intSum2 + Val(Mid(strBarcode, i, 1))
End If
Next iintSum1 = intSum1 * 3 + intSum2If intSum1 Mod 10 Then
intSum2 = ((intSum1 + 5) \ 10) * 10
Text1 = strBarcode & (intSum2 - intSum1)
Else
Text1 = strBarcode & (intSum1 / 10 - 4)
End If
而重第1位开始奇数相加 所得结果是6909612112115下面是重第3位奇数相加的代码Private Sub Command1_Click()
Dim str As String
str = "690961211211"Text1.Text = str & tiaoXinMa(str)
End SubFunction tiaoXinMa(ByVal str As String) As Integer
Dim i As Integer
Dim sum1 As Integer
Dim sum2 As IntegerFor i = 1 To 13
If i Mod 2 = 0 Then
sum1 = sum1 + Val(Mid(str, i, 1))
Else
If i >= 3 Then
sum2 = sum2 + Val(Mid(str, i, 1))
End If
End If
Nextsum1 = sum1 * 3 + sum2If sum1 Mod 10 = 0 Then
sum1 = sum1 / 10 - 4
Else
sum1 = (((sum1 + 10) \ 10) * 10) - sum1
End IftiaoXinMa = sum1
End Function
Function GetEANCode(strBarcode As String, Optional EAN As Long = 13) As String
'strBarcode 输入的条码 / EAN 分为8位和13位
Dim i As Long, q As Long, o As Long
Dim s As String
Dim tmp As Long
s = Trim(strBarcode)
If Not IsNumeric(Trim(s)) Then Exit Function
If Len(s) < EAN - 1 Or Len(s) > EAN Then
'MsgBox "输入数据不正确"
Exit Function
End If
s = Left(s, EAN - 1)
strBarcode = s
s = "0" & StrReverse(s) '反向
'条码位置序号 13 12 11 10 9 8 7 6 5 4 3 2 1
'因为EAN码有13位和8位之分,反向后才能保证奇偶位正确
For i = 2 To Len(s)
tmp = Mid(s, i, 1)
If i Mod 2 = 0 Then
o = o + tmp '偶位数相加
Else
q = q + tmp '奇位数相加
End If
Next
tmp = (o * 3) + q '偶位数之和乘3加奇位数之和
tmp = 10 - Right(CStr(tmp), 1) '10减去上面的个位数,得到校验码
GetEANCode = strBarcode & Right(CStr(tmp), 1) '校验码10取0End Function
Option ExplicitPrivate Sub Command1_Click()
Dim str As String
str = "690961211211"
Dim sum As Integer, i As Integer
sum = 0
For i = 0 To Len(str) / 2 - 1
sum = sum + Mid(str, 2 + 2 * i, 1)
Next
sum = sum * 3
For i = 0 To Len(str) / 2 - 2'奇数从第三位开始,最后一位结果是1
sum = sum + Mid(str, 3 + 2 * i, 1)
Next
'For i = 0 To Len(str) / 2 - 2'奇数从第一位开始,最后一位结果是5
'sum = sum + Mid(str, 3 + 2 * i, 1)
'Next
If sum Mod 10 = 0 Then
sum = sum / 10 - 4
Else
sum = (sum \ 10 + 1) * 10 - sum
End If
Text1.Text = str & CStr(sum)
End Sub同意3楼,LZ的结果给错了
条码位置序号是: 13 12 11 10 9 8 7 6 5 4 3 2 1 并不是顺序的...
其中,1位是校验码,就是楼主要求的结果...