کد زیر را برای تشخیص صحت کد ملی به صورت vb نوشتم که مشکلات مد نظر شما در آن رفع شده است
Public Function Check_Code_meli(S As String)
Dim meli_code, C, N, R As Long
If (Len(S) = 10) Then
If (S = "1111111111" Or S = 0 Or S = "222222222" Or S = "3333333333" Or S = "4444444444" & _
S = "5555555555" Or S = "6666666666" Or S = "7777777777" Or S = "8888888888" Or S = "9999999999") Then
MsgBox "It's Wrong", vbCritical, "Error"
Check_Code_meli = False
Else
C = Val(Right((S), 1))
N = (Val(Left((S), 1)) * 10) + (Val(Mid((S), 2, 1)) * 9) + (Val(Mid((S), 3, 1)) * 8) + (Val(Mid((S), 4, 1)) * 7) + (Val(Mid((S), 5, 1)) * 6) + (Val(Mid((S), 6, 1)) * 5) + (Val(Mid((S), 7, 1)) * 4) + (Val(Mid((S), 8, 1)) * 3) + (Val(Mid((S), 9, 1)) * 2)
R = N - Fix(N / 11) * 11
If ((R = 0 And R = C) Or (R = 1 And C = 1) Or (R > 1 And C = 11 - R)) Then
Check_Code_meli = True
Else
MsgBox " It's Wrong ", vbCritical, "Error"
Check_Code_meli = False
End If
End If
Else
MsgBox "It's not 10 digit", vbCritical, "Error"
Check_Code_meli = False
End If
End Function