19. Jak sprawdzić poprawność nowego numeru rachunku bankowego NRB?

Rozwiązanie podał Grzegorz Danowski (grzegorz.danowski@bankmillennium.pl), oto ono:

Option Compare Database
Option Explicit

Public Function TylkoZnakiAlfa(strWe As String) As String
    Dim i As Byte, strWy As String, strL As String * 1
    TylkoZnakiAlfa = strWe
    For i = 1 To Len(strWe)
        strL = Mid(strWe, i, 1)
        If Asc(strL) >= 48 And Asc(strL) <= 57 Then
            strWy = strWy & strL
        End If
    Next i
    TylkoZnakiAlfa = strWy
End Function

Public Function LiczMod(ByVal strLiczba As String, bytDzielnik As Byte) As
Byte
    If Len(strLiczba) < 10 Then
        LiczMod = CLng(strLiczba) Mod bytDzielnik
    Else
        LiczMod = LiczMod(LiczMod(Left(strLiczba, 9), bytDzielnik) & _
                Mid(strLiczba, 10), bytDzielnik)
    End If
End Function


Public Function CzyNumerNrb(strWe As String) As Boolean
    Dim strObr As String, bytR As Byte
    
    'wyrzucenie wszystkich znaków poza cyframi
    strObr = TylkoZnakiAlfa(strWe)
    
    'dodanie kodu kraju PL=2521
    'obrócenie cyfr kontrolnych na koniec
    strObr = Mid(strObr, 3) & "2521" & Left(strObr, 2)
    
    'wyliczenie reszty z dzielenia przez 97
    bytR = LiczMod(strObr, 97)
    If bytR = 1 Then
        CzyNumerNrb = True
    Else
        Debug.Print "Nieprawidłowy NRB:", strObr, bytR
        CzyNumerNrb = False
    End If
End Function