Эй, ребята, у меня есть функция JavaScript, которая выдает 12-значный код UPC (на основе первых 11 цифр:
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 и т. Д., Так что для меня это ново