20. Jak sprawdzić poprawność numeru NIP?

Rozwiązanie podał MSB (marcoban@poczta.onet.pl), oto ono:

'--------------------------------------------------------------------------
'Kontrola poprawności NIP
Function KontrolaNIP(ByVal NrNip As Variant) As Boolean
    Dim LiczKontr As Long, WylKontr As Long, i As Long
    Dim L(9) As Long

    If VarType(NrNip) = 8 Then

        LiczKontr = Int(Val(Right$(NrNip, 1)))

        For i = 1 To 9
            L(i) = Int(Val(Mid$(NrNip, i, 1)))
        Next
            WylKontr = ((L(1) * 6 + L(2) * 5 + L(3) * 7 + L(4) * 2 + L(5) * _
            3 + L(6) * 4 + L(7) * 5 + L(8) * 6 + L(9) * 7) Mod 11)
        If WylKontr = LiczKontr Then
            KontrolaNIP = True
        Else
            KontrolaNIP = False
        End If
    Else
    KontrolaNIP = False
        Exit Function
    End If
End Function
'-----------------------------------------

Pierwsze 3 cyfry numeru NIP zgodnie ze specyfikacją oznaczają numer US, nadającego numerek.
Numer trzeba podawać jednym ciągiem (10 znaków) po wyeliminowaniu myślników.
Zwracana jest wartość logiczna.
Funkcje popełniłem... parę lat temu i dotąd działa bz.

Pozdrawiam,
MSB