|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
Function Code128B(tar As Range) '128B码:ChrW(204).
Dim s$, i%, ss$, j%, curR%, checkB%
curR = tar.Row
s = tar.Value
checkB = 1 '开始位的码值为104 mod 103 =1
For i = 1 To Len(s)
ss = Mid(s, i, 1)
j = Asc(ss) '没过滤无效字符,比如汉字.
If j < 135 Then
j = j - 32
ElseIf j > 134 Then
j = j - 100
End If
checkB = (checkB + i * j) Mod 103 '计算校验位
Next
If checkB < 95 And checkB > 0 Then '有的资料直接求103的模,解说不充分,因为有的校验位超过127时,系统会"吃"掉它们(连带休止符).
checkB = checkB + 32
ElseIf checkB > 94 Then '字体设置时,个别字模被定义了2个值.观察字体文件时能发现.
checkB = checkB + 100
End If
Code128B = ChrW(204) & s & IIf(checkB, ChrW(checkB), Chr(32)) & ChrW(206) 'ChrW(32)无法正确返回
End Function
使用论坛的自定义函数
发现超过3万行 的单元格就用不成了
请帮忙解决
|
|