جام میدهیم.
- با زدن کلیدهای Alt + F11 به کدنویسی بروید.
- در فضای مربوط به ماژولها کلیک راست کرده و گزینه Insert و سپس Module را انتخاب کنید.
- کدهای زیر را در آنجا قرار دهید.
- بهتر است در آن واحد فقط یک فایل باز اکسل داشته باشید
- فایل را با پسوند XLSM ماکرو اینیبل ذخیره کنید.
- فرض می کنیم شماره شبا را در A2 وارد کرده اید.
- کافیست در B2 از تابع VALIDATEIBAN(A2) استفاده نمائید.
Public Function VALIDATEIBAN(ByVal IBAN As String) As String
    On Error GoTo CatchError
    Dim objRegExp As Object
    Dim IBANformat As Boolean
    Dim IBANNR As String
    Dim ReplaceChr As String
    Dim ReplaceBy As String
    IBAN = UCase(IBAN)
    IBAN = Replace(IBAN, " ", "")
    IBAN = Trim(IBAN)
    Set objRegExp = CreateObject("vbscript.regexp")
    objRegExp.IgnoreCase = True
    objRegExp.Global = True
    objRegExp.Pattern = "[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}"
    IBANformat = objRegExp.Test(IBAN)
    'Validity of country code will not be checked!
    If IBANformat = False Then
        VALIDATEIBAN = ChrW(1582) & ChrW(1575) & ChrW(1604) & ChrW(1740) & " " & ChrW(1740) & ChrW(1575) & " " & ChrW(1601) & ChrW(1585) & ChrW(1605) & ChrW(1578) & " " & ChrW(1606) & ChrW(1575) & ChrW(1583) & ChrW(1585) & ChrW(1587) & ChrW(1578)
    Else
        'Flip first 4 characters to the back
        IBANNR = Right(IBAN, Len(IBAN) - 4) & Left(IBAN, 4)
        'Replace letters by the right numbers
        For Nr = 10 To 35
            ReplaceChr = Chr(Nr + 55)
            ReplaceBy = Trim(Str(Nr))
            IBANNR = Replace(IBANNR, ReplaceChr, ReplaceBy)
        Next Nr
        'Loop through the IBAN, as it is too long to calculate at one go
        CurrPart = ""
        Answer = ""
        For CurrDigit = 1 To Len(IBANNR)
            CurrPart = CurrPart & Mid$(IBANNR, CurrDigit, 1)
            CurrNumber = CLng(CurrPart)
            'If the number can be divided
            If 97 <= CurrNumber Then
                LeftOver = CurrNumber Mod 97
                WorkValue = (CurrNumber - LeftOver) / 97
                Answer = Answer & CStr(WorkValue)
                CurrPart = CStr(LeftOver)
            Else
                'If no division occurred, add a trailing zero
                If Len(Answer) > 0 Then
                    Answer = Answer & "0"
                    'Exception for the last number
                    If CurrDigit = Len(IBANNR) Then
                        LeftOver = CurrNumber Mod 97
                    Else
                    End If
                Else
                End If
            End If
        Next
        If LeftOver = 1 Then
            VALIDATEIBAN = ChrW(1589) & ChrW(1581) & ChrW(1740) & ChrW(1581)
        Else
            VALIDATEIBAN = ChrW(1606) & ChrW(1575) & ChrW(1583) & ChrW(1585) & ChrW(1587) & ChrW(1578)
        End If
    End If
    Exit Function
CatchError:
    VALIDATEIBAN = "ERROR: " & Err.Description
End Function

ورود به سایت