嗨,我有一个产生12位数字的UPC码(基于第一11位JavaScript函数:Javascript转换为Excel VB功能生成#NUM!错误
function ccc12(rawVal) {
factor = 3;
sum = 0;
rawVal = rawVal.toString();
if (rawVal.length!=11){
throw "The UCC-12 ID Number requires that you enter 11 digits.";
}
for (index = rawVal.length; index > 0; --index) {
sum = sum + rawVal.substring (index-1, index) * factor;
factor = 4 - factor;
}
return ((1000 - sum) % 10);
}
假设上面如果我给84686400201作为rawVal,然后2将结果返回。 这是再转换为
Function generateUPC(upcCode As Integer) As String
Dim upcCheckDigit, factor, sum As Integer
Dim upcString As String
factor = 3
sum = 0
For i = Len(upcCode) To 0 Step -1
sum = sum + Mid(upcCode, i - 1, 1) * factor
factor = 4 - factor
Next i
upcCheckDigit = ((1000 - sum) Mod 10)
upcString = upcCode & upcCheckDigit
generateUPC = upcString
End Function
该函数返回原始字符串加上一个数字,而是我得到#NUM!在工作表中,当我把= generateUPC(84686400201)进入细胞。
有何想法?从来没有真正困扰做VB宏等之前,所以这是我新
尽管我将第一个答案标记为正确,但这同样好。也赞成你指出整数与长期问题的事实。 – CogitoErgoSum 2010-12-08 21:58:01