Conectar Excel no Google analytics capa - Guia do Excel
Como conectar o Google Analytics no Excel
10 de março de 2018
Tabela price Excel capa - Guia do Excel
Tabela Price com carência no Excel
26 de março de 2018

Validar Inscrição Estadual no Excel

É comum as empresas terem problemas na hora da validação da inscrição estadual. Neste artigo mostramos como fazer isso no Excel. Veja também Como consultar o Sintegra Automaticamente.

A inconsistência da inscrição estadual dados gera problemas na entrega do Sintegra, e por conseguinte você terá muito retrabalho para corrigir estas informações, regerar e reenviar o arquivo.

Para realizar estes cálculos você pode verificar nesta página: http://www.sintegra.gov.br/insc_est.html o cálculo de todas as Inscrições Estaduais.

Neste artigo você terá o código fonte liberado e a implementação da validação da Inscrição Estadual através de uma UDF, função própria global no Excel feita em VBA.

Como implementar a função de validação de inscrição estadual no Excel

Para instalar a função pressione as teclas ALT + F11, depois clique em Inserir->Módulo

Validar Inscrição Estadual Excel 2

No módulo criado cole o código VBA:

Function ChecaInscrE(ByVal pUF As String, ByVal pInscr As String)
    Dim strBase     As String
    Dim strBase2    As String
    Dim strOrigem   As String
    Dim strDigito1  As String
    Dim strDigito2  As String
    Dim intPos      As Long
    Dim intValor    As Long
    Dim intSoma     As Long
    Dim intResto    As Long
    Dim intNumero   As Long
    Dim intPeso     As Long
    Dim intDig      As Long

    ChecaInscrE = False

    strBase = ""
    strBase2 = ""
    strOrigem = ""

    If Trim(pInscr) = "ISENTO" Or Trim(pInscr) = "EX" Then
        ChecaInscrE = True
        Exit Function
    End If

    For intPos = 1 To Len(Trim(pInscr))
        If InStr(1, "0123456789P", Mid(pInscr, intPos, 1), vbTextCompare) > 0 Then
            strOrigem = strOrigem & Mid(pInscr, intPos, 1)
        End If
    Next
    
    Select Case pUF
        Case "AC" 'Acre
            strBase = Left(Trim(strOrigem) & "000000000", 13)
            d01 = CInt(Mid(strBase, 1, 1))
            d02 = CInt(Mid(strBase, 2, 1))
            d03 = CInt(Mid(strBase, 3, 1))
            d04 = CInt(Mid(strBase, 4, 1))
            d05 = CInt(Mid(strBase, 5, 1))
            d06 = CInt(Mid(strBase, 6, 1))
            d07 = CInt(Mid(strBase, 7, 1))
            d08 = CInt(Mid(strBase, 8, 1))
            d09 = CInt(Mid(strBase, 9, 1))
            d10 = CInt(Mid(strBase, 10, 1))
            d11 = CInt(Mid(strBase, 11, 1))
            dv01 = CInt(Mid(strBase, 12, 1))
            dv02 = CInt(Mid(strBase, 13, 1))
            
            If d01 <> 0 Or d02 <> 1 Then
                ChecaInscrE = False
                Exit Function
            End If
            ds = 4 * d01 + 3 * d02 + 2 * d03 + 9 * d04 + 8 * d05 + 7 * d06 + 6 * d07 + 5 * d08 + _
                               4 * d09 + 3 * d10 + 2 * d11
                          aux1 = Fix(ds / 11)
            aux1 = aux1 * 11
            aux2 = ds - aux1 ' aux2 é o resto, ou mod
            digverificador1 = 11 - aux2
            
            If digverificador1 = 10 Or digverificador1 = 11 Then
                digverificador1 = 0 'primeiro digito
            End If
            
            ds = 5 * d01 + 4 * d02 + 3 * d03 + 2 * d04 + 9 * d05 + 8 * d06 + 7 * d07 + 6 * d08 + _
                               5 * d09 + 4 * d10 + 3 * d11 + 2 * digverificador1
            aux1 = Fix(ds / 11)
            aux1 = aux1 * 11
            aux2 = ds - aux1 ' aux2 é o resto, ou mod
            digverificador2 = 11 - aux2
            
            If digverificador2 = 10 Or digverificador2 = 11 Then
                digverificador2 = 0 'primeiro digito
            End If
            
            If digverificador1 = dv01 And digverificador2 = dv02 Then
                ChecaInscrE = True
            End If
            
        Case "AL" ' Alagoas
            strBase = Left(Trim(strOrigem) & "000000000", 9)
            
            If Left(strBase, 2) = "24" Then
                intSoma = 0
                For intPos = 1 To 8
                    intValor = CInt(Mid(strBase, intPos, 1))
                    intValor = intValor * (10 - intPos)
                    intSoma = intSoma + intValor
                Next
            
                intSoma = intSoma * 10
                intResto = intSoma Mod 11
                strDigito1 = Right(IIf(intResto = 10, "0", CStr(intResto)), 1)
                strBase2 = Left(strBase, 8) & strDigito1
                If strBase2 = strOrigem Then
                    ChecaInscrE = True
                End If
            End If
            
        Case "AM" ' Amazonas
            strBase = Left(Trim(strOrigem) & "000000000", 9)
            intSoma = 0
            
            For intPos = 1 To 8
                intValor = CInt(Mid(strBase, intPos, 1))
                intValor = intValor * (10 - intPos)
                intSoma = intSoma + intValor
            Next
            
            If intSoma < 11 Then
                strDigito1 = Right(CStr(11 - intSoma), 1)
            Else
                intResto = intSoma Mod 11
                strDigito1 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1) End If strBase2 = Left(strBase, 8) & strDigito1 If strBase2 = strOrigem Then ChecaInscrE = True End If Case "AP" ' Amapa strBase = Left(Trim(strOrigem) & "000000000", 9) intPeso = 0 intDig = 0 If Left(strBase, 2) = "03" Then intNumero = Fix(Left(strBase, 8)) If intNumero >= 3000001 And intNumero <= 3017000 Then intPeso = 5 intDig = 0 ElseIf intNumero >= 3017001 And intNumero <= 3019022 Then intPeso = 9 intDig = 1 ElseIf intNumero >= 3019023 Then
                    intPeso = 0
                    intDig = 0
                End If
                
                intSoma = intPeso
                
                For intPos = 1 To 8
                    intValor = CInt(Mid(strBase, intPos, 1))
                    intValor = intValor * (10 - intPos)
                    intSoma = intSoma + intValor
                Next
            
                intResto = intSoma Mod 11
                intValor = 11 - intResto
            
                If intValor = 10 Then
                    intValor = 0
                ElseIf intValor = 11 Then
                    intValor = intDig
                End If
                
                strDigito1 = Right(CStr(intValor), 1)
                strBase2 = Left(strBase, 8) & strDigito1
            
                If strBase2 = strOrigem Then
                    ChecaInscrE = True
                End If
            End If
            
        Case "BA" ' Bahia
            strBase = Left(Trim(strOrigem) & "00000000", 8)
            
            If InStr(1, "0123458", Left(strBase, 1), vbTextCompare) > 0 Then
                intSoma = 0
                
                For intPos = 1 To 6
                    intValor = CInt(Mid(strBase, intPos, 1))
                    intValor = intValor * (8 - intPos)
                    intSoma = intSoma + intValor
                Next
                
                intResto = intSoma Mod 10
                strDigito2 = Right(IIf(intResto = 0, "0", CStr(10 - intResto)), 1)
                strBase2 = Left(strBase, 6) & strDigito2
                intSoma = 0
            
                For intPos = 1 To 7
                    intValor = CInt(Mid(strBase2, intPos, 1))
                    intValor = intValor * (9 - intPos)
                    intSoma = intSoma + intValor
                Next
                
                intResto = intSoma Mod 10
                strDigito1 = Right(IIf(intResto = 0, "0", CStr(10 - intResto)), 1)
            Else
                intSoma = 0
                
                For intPos = 1 To 6
                    intValor = CInt(Mid(strBase, intPos, 1))
                    intValor = intValor * (8 - intPos)
                    intSoma = intSoma + intValor
                Next
                
                intResto = intSoma Mod 11
                strDigito2 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1)
                strBase2 = Left(strBase, 6) & strDigito2
                intSoma = 0
                
                For intPos = 1 To 7
                    intValor = CInt(Mid(strBase2, intPos, 1))
                    intValor = intValor * (9 - intPos)
                    intSoma = intSoma + intValor
                Next
                
                intResto = intSoma Mod 11
                strDigito1 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1) End If strBase2 = Left(strBase, 6) & strDigito1 & strDigito2 If strBase2 = strOrigem Then ChecaInscrE = True End If Case "CE" ' Ceara strBase = Left(Trim(strOrigem) & "000000000", 9) intSoma = 0 For intPos = 1 To 8 intValor = CInt(Mid(strBase, intPos, 1)) intValor = intValor * (10 - intPos) intSoma = intSoma + intValor Next intResto = intSoma Mod 11 intValor = 11 - intResto If intValor > 9 Then
                intValor = 0
            End If
            
            strDigito1 = Right(CStr(intValor), 1)
            strBase2 = Left(strBase, 8) & strDigito1
            
            If strBase2 = strOrigem Then
                ChecaInscrE = True
            End If
            
        Case "DF" ' Distrito Federal
            strBase = Left(Trim(strOrigem) & "0000000000000", 13)
            
            If Left(strBase, 2) = "07" Then
                intSoma = 0
                intPeso = 2
                
                For intPos = 11 To 1 Step -1
                    intValor = CInt(Mid(strBase, intPos, 1))
                    intValor = intValor * intPeso
                    intSoma = intSoma + intValor
                    intPeso = intPeso + 1
                    
                    If intPeso > 9 Then
                        intPeso = 2
                    End If
                Next
                intResto = intSoma Mod 11
                strDigito1 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1) strBase2 = Left(strBase, 11) & strDigito1 intSoma = 0 intPeso = 2 For intPos = 12 To 1 Step -1 intValor = CInt(Mid(strBase, intPos, 1)) intValor = intValor * intPeso intSoma = intSoma + intValor intPeso = intPeso + 1 If intPeso > 9 Then
                        intPeso = 2
                    End If
                Next
                
                intResto = intSoma Mod 11
                strDigito2 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1)
                strBase2 = Left(strBase, 12) & strDigito2
                
                If strBase2 = strOrigem Then
                    ChecaInscrE = True
                End If
            End If
            
        Case "ES" ' Espirito Santo
            strBase = Left(Trim(strOrigem) & "000000000", 9)
            intSoma = 0
            
            For intPos = 1 To 8
                intValor = CInt(Mid(strBase, intPos, 1))
                intValor = intValor * (10 - intPos)
                intSoma = intSoma + intValor
            Next
            
            intResto = intSoma Mod 11
            strDigito1 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1) strBase2 = Left(strBase, 8) & strDigito1 If strBase2 = strOrigem Then ChecaInscrE = True End If Case "GO" ' Goias strBase = Left(Trim(strOrigem) & "000000000", 9) If InStr(1, "10,11,15", Left(strBase, 2), vbTextCompare) > 0 Then
                intSoma = 0
                For intPos = 1 To 8
                    intValor = CInt(Mid(strBase, intPos, 1))
                    intValor = intValor * (10 - intPos)
                    intSoma = intSoma + intValor
                Next
                
                intResto = intSoma Mod 11
                If intResto = 0 Then
                    strDigito1 = "0"
                ElseIf intResto = 1 Then
                        intNumero = CInt(Left(strBase, 8))
                        strDigito1 = Right(IIf(intNumero >= 10103105 And intNumero <= 10119997, "1", "0"), 1)
                    Else
                        strDigito1 = Right(CStr(11 - intResto), 1)
                    End If
                    
                    strBase2 = Left(strBase, 8) & strDigito1
                If strBase2 = strOrigem Then
                    ChecaInscrE = True
                End If
            End If
            
        Case "MA" ' Maranhão
            strBase = Left(Trim(strOrigem) & "000000000", 9)
            
            If Left(strBase, 2) = "12" Then
                intSoma = 0
                For intPos = 1 To 8
                    intValor = CInt(Mid(strBase, intPos, 1))
                    intValor = intValor * (10 - intPos)
                    intSoma = intSoma + intValor
                Next
            
                intResto = intSoma Mod 11
                strDigito1 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1)
                strBase2 = Left(strBase, 8) & strDigito1
                
                If strBase2 = strOrigem Then
                    ChecaInscrE = True
                End If
            End If
            
        Case "MT" ' Mato Grosso
            While Len(strOrigem) < 11
                strOrigem = "0" & strOrigem
            Wend
            
            strBase = Left(Trim(strOrigem) & "000000000", 11)
            d01 = CInt(Mid(strBase, 1, 1))
            d02 = CInt(Mid(strBase, 2, 1))
            d03 = CInt(Mid(strBase, 3, 1))
            d04 = CInt(Mid(strBase, 4, 1))
            d05 = CInt(Mid(strBase, 5, 1))
            d06 = CInt(Mid(strBase, 6, 1))
            d07 = CInt(Mid(strBase, 7, 1))
            d08 = CInt(Mid(strBase, 8, 1))
            d09 = CInt(Mid(strBase, 9, 1))
            d10 = CInt(Mid(strBase, 10, 1))
            dfinal = CInt(Mid(strBase, 11, 1))
            
            ds = 3 * d01 + 2 * d02 + 9 * d03 + 8 * d04 + 7 * d05 + 6 * d06 + 5 * d07 + 4 * d08 + _
                 3 * d09 + 2 * d10
            
            aux1 = Fix(ds / 11)
            aux1 = aux1 * 11
            aux2 = ds - aux1
            
            If aux2 = 0 Or aux2 = 1 Then
                digVerificador = 0
            Else
                digVerificador = 11 - aux2
            End If
            
            If dfinal = digVerificador Then
                ChecaInscrE = True
            End If
            
        Case "MS" ' Mato Grosso do Sul
            strBase = Left(Trim(strOrigem) & "000000000", 9)
            
            If Left(strBase, 2) = "28" Then
                intSoma = 0
            
                For intPos = 1 To 8
                    intValor = CInt(Mid(strBase, intPos, 1))
                    intValor = intValor * (10 - intPos)
                    intSoma = intSoma + intValor
                Next
                
                intResto = intSoma Mod 11
                strDigito1 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1) strBase2 = Left(strBase, 8) & strDigito1 If strBase2 = strOrigem Then ChecaInscrE = True End If End If Case "MG" ' Minas Gerais strBase = Left(Trim(strOrigem) & "0000000000000", 13) strBase2 = Left(strBase, 3) & "0" & Mid(strBase, 4, 8) intNumero = 2 For intPos = 1 To 12 intValor = CInt(Mid(strBase2, intPos, 1)) intNumero = IIf(intNumero = 2, 1, 2) intValor = intValor * intNumero If intValor > 9 Then
                    strDigito1 = FormatNumber(intValor, "00")
                    intValor = CInt(Left(strDigito1, 1)) + CInt(Right(strDigito1, 1))
                End If
                
                intSoma = intSoma + intValor
            Next
            
            intValor = intSoma
            
            While Right(FormatNumber(intValor, "000"), 1) <> "0"
                intValor = intValor + 1
            Wend
            
            strDigito1 = Right(FormatNumber(intValor - intSoma, "00"), 1)
            strBase2 = Left(strBase, 11) & strDigito1
            intSoma = 0
            intPeso = 2
            
            For intPos = 12 To 1 Step -1
                intValor = CInt(Mid(strBase2, intPos, 1))
                intValor = intValor * intPeso
                intSoma = intSoma + intValor
                intPeso = intPeso + 1
                
                If intPeso > 11 Then
                    intPeso = 2
                End If
            Next
            
            intResto = intSoma Mod 11
            strDigito2 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1)
            strBase2 = strBase2 & strDigito2
            
            If strBase2 = strOrigem Then
                ChecaInscrE = True
            End If
            
        Case "PA" ' Para
            strBase = Left(Trim(strOrigem) & "000000000", 9)
            
            If Left(strBase, 2) = "15" Then
                intSoma = 0
                For intPos = 1 To 8
                    intValor = CInt(Mid(strBase, intPos, 1))
                    intValor = intValor * (10 - intPos)
                intSoma = intSoma + intValor
                Next
                
                intResto = intSoma Mod 11
                strDigito1 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1) strBase2 = Left(strBase, 8) & strDigito1 If strBase2 = strOrigem Then ChecaInscrE = True End If End If Case "PB" ' Paraiba strBase = Left(Trim(strOrigem) & "000000000", 9) intSoma = 0 For intPos = 1 To 8 intValor = CInt(Mid(strBase, intPos, 1)) intValor = intValor * (10 - intPos) intSoma = intSoma + intValor Next intResto = intSoma Mod 11 intValor = 11 - intResto If intValor > 9 Then
                intValor = 0
            End If
            
            strDigito1 = Right(CStr(intValor), 1)
            strBase2 = Left(strBase, 8) & strDigito1
            
            If strBase2 = strOrigem Then
                ChecaInscrE = True
            End If
            
        Case "PE" ' Pernambuco
            strBase = Left(Trim(strOrigem) & "000000000", 9)
            intSoma = 0
            intPeso = 2
            
            For intPos = 7 To 1 Step -1
                intValor = CInt(Mid(strBase, intPos, 1))
                intValor = intValor * intPeso
                intSoma = intSoma + intValor
                intPeso = intPeso + 1
            Next
        
            intResto = intSoma Mod 11
            
            If intResto = 0 Or intResto = 1 Then
                strDigito1 = 0
            Else
                strDigito1 = 11 - intResto
            End If
        
            intSoma = 0
            intPeso = 2
        
            For intPos = 8 To 1 Step -1
                intValor = CInt(Mid(strBase, intPos, 1))
                intValor = intValor * intPeso
                intSoma = intSoma + intValor
                intPeso = intPeso + 1
            Next
        
            intResto = intSoma Mod 11
            
            If intResto = 0 Or intResto = 1 Then
                strDigito2 = 0
            Else
                strDigito2 = 11 - intResto
            End If
            
            strBase2 = Left(strBase, 7) & strDigito1 & strDigito2
            
            If strBase2 = strOrigem Then
                ChecaInscrE = True
            End If
        
        Case "PI" ' Piaui
            strBase = Left(Trim(strOrigem) & "000000000", 9)
            intSoma = 0
            
            For intPos = 1 To 8
                intValor = CInt(Mid(strBase, intPos, 1))
                intValor = intValor * (10 - intPos)
                intSoma = intSoma + intValor
            Next
            
            intResto = intSoma Mod 11
            strDigito1 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1) strBase2 = Left(strBase, 8) & strDigito1 If strBase2 = strOrigem Then ChecaInscrE = True End If Case "PR" ' Parana strBase = Left(Trim(strOrigem) & "0000000000", 10) intSoma = 0 intPeso = 2 For intPos = 8 To 1 Step -1 intValor = CInt(Mid(strBase, intPos, 1)) intValor = intValor * intPeso intSoma = intSoma + intValor intPeso = intPeso + 1 If intPeso > 7 Then
                intPeso = 2
                End If
            Next
            
            intResto = intSoma Mod 11
            strDigito1 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1) strBase2 = Left(strBase, 8) & strDigito1 intSoma = 0 intPeso = 2 For intPos = 9 To 1 Step -1 intValor = CInt(Mid(strBase2, intPos, 1)) intValor = intValor * intPeso intSoma = intSoma + intValor intPeso = intPeso + 1 If intPeso > 7 Then
                    intPeso = 2
                End If
            Next
            
            intResto = intSoma Mod 11
            strDigito2 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1) strBase2 = strBase2 & strDigito2 If strBase2 = strOrigem Then ChecaInscrE = True End If Case "RJ" ' Rio de Janeiro strBase = Left(Trim(strOrigem) & "00000000", 8) intSoma = 0 intPeso = 2 For intPos = 7 To 1 Step -1 intValor = CInt(Mid(strBase, intPos, 1)) intValor = intValor * intPeso intSoma = intSoma + intValor intPeso = intPeso + 1 If intPeso > 7 Then
                    intPeso = 2
                End If
            Next
            
            intResto = intSoma Mod 11
            strDigito1 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1) strBase2 = Left(strBase, 7) & strDigito1 If strBase2 = strOrigem Then ChecaInscrE = True End If Case "RN" ' Rio Grande do Norte strBase = Left(Trim(strOrigem) & "000000000", 9) If Left(strBase, 2) = "20" Then intSoma = 0 For intPos = 1 To 8 intValor = CInt(Mid(strBase, intPos, 1)) intValor = intValor * (10 - intPos) intSoma = intSoma + intValor Next intSoma = intSoma * 10 intResto = intSoma Mod 11 strDigito1 = Right(IIf(intResto > 9, "0", CStr(intResto)), 1)
                strBase2 = Left(strBase, 8) & strDigito1
                
                If strBase2 = strOrigem Then
                    ChecaInscrE = True
                End If
            End If
        
        Case "RO" ' Rondonia
            strBase = Left(Trim(strOrigem) & "000000000", 14)
            d01 = CInt(Mid(strBase, 1, 1))
            d02 = CInt(Mid(strBase, 2, 1))
            d03 = CInt(Mid(strBase, 3, 1))
            d04 = CInt(Mid(strBase, 4, 1))
            d05 = CInt(Mid(strBase, 5, 1))
            d06 = CInt(Mid(strBase, 6, 1))
            d07 = CInt(Mid(strBase, 7, 1))
            d08 = CInt(Mid(strBase, 8, 1))
            d09 = CInt(Mid(strBase, 9, 1))
            d10 = CInt(Mid(strBase, 10, 1))
            d11 = CInt(Mid(strBase, 11, 1))
            d12 = CInt(Mid(strBase, 12, 1))
            d13 = CInt(Mid(strBase, 13, 1))
            dfinal = CInt(Mid(strBase, 14, 1))
            ds = 6 * d01 + 5 * d02 + 4 * d03 + 3 * d04 + 2 * d05 + 9 * d06 + 8 * d07 + 7 * d08 + _
                              6 * d09 + 5 * d10 + 4 * d11 + 3 * d12 + 2 * d13
            aux1 = Fix(ds / 11)
            aux1 = aux1 * 11
            aux2 = ds - aux1
            digVerificador = 11 - aux2
            
            If digVerificador > 9 Then
                resto_do_calculo = digVerificador - 10
            Else
                resto_do_calculo = digVerificador
            End If
            
            If dfinal <> resto_do_calculo Then
                ChecaInscrE = False
            Else
                ChecaInscrE = True
            End If
            
        Case "RR" ' Roraima
            strBase = Left(Trim(strOrigem) & "000000000", 9)
        
            If Left(strBase, 2) = "24" Then
                intSoma = 0
                
                For intPos = 1 To 8
                    intValor = CInt(Mid(strBase, intPos, 1))
                    intValor = intValor * intPos
                    intSoma = intSoma + intValor
                Next
                
                intResto = intSoma Mod 9
                strDigito1 = Right(CStr(intResto), 1)
                strBase2 = Left(strBase, 8) & strDigito1
                
                If strBase2 = strOrigem Then
                    ChecaInscrE = True
                End If
            End If
            
        Case "RS" ' Rio Grande do Sul
            strBase = Left(Trim(strOrigem) & "0000000000", 10)
            intNumero = CInt(Left(strBase, 3))
            
            If intNumero > 0 And intNumero < 468 Then intSoma = 0 intPeso = 2 For intPos = 9 To 1 Step -1 intValor = CInt(Mid(strBase, intPos, 1)) intValor = intValor * intPeso intSoma = intSoma + intValor intPeso = intPeso + 1 If intPeso > 9 Then
                        intPeso = 2
                    End If
                Next
                
                intResto = intSoma Mod 11
                intValor = 11 - intResto
                If intValor > 9 Then
                    intValor = 0
                End If
                
                strDigito1 = Right(CStr(intValor), 1)
                strBase2 = Left(strBase, 9) & strDigito1
                
                If strBase2 = strOrigem Then
                    ChecaInscrE = True
                End If
            End If
            
        Case "SC" ' Santa Catarina
            strBase = Left(Trim(strOrigem) & "000000000", 9)
            intSoma = 0
            
            For intPos = 1 To 8
                intValor = CInt(Mid(strBase, intPos, 1))
                intValor = intValor * (10 - intPos)
                intSoma = intSoma + intValor
            Next
            
            intResto = intSoma Mod 11
            strDigito1 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1) strBase2 = Left(strBase, 8) & strDigito1 If strBase2 = strOrigem Then ChecaInscrE = True End If Case "SE" ' Sergipe strBase = Left(Trim(strOrigem) & "000000000", 9) intSoma = 0 For intPos = 1 To 8 intValor = CInt(Mid(strBase, intPos, 1)) intValor = intValor * (10 - intPos) intSoma = intSoma + intValor Next intResto = intSoma Mod 11 intValor = 11 - intResto If intValor > 9 Then
                intValor = 0
            End If
            
            strDigito1 = Right(CStr(intValor), 1)
            strBase2 = Left(strBase, 8) & strDigito1
            
            If strBase2 = strOrigem Then
                ChecaInscrE = True
            End If
            
        Case "SP" ' São Paulo
            If Left(strOrigem, 1) = "P" Then
                strBase = Left(Trim(strOrigem) & "0000000000000", 13)
                strBase2 = Mid(strBase, 2, 8)
                intSoma = 0
                intPeso = 1
                
                For intPos = 1 To 8
                    intValor = CInt(Mid(strBase, intPos, 1))
                    intValor = intValor * intPeso
                    intSoma = intSoma + intValor
                    intPeso = intPeso + 1
                    
                    If intPeso = 2 Then
                        intPeso = 3
                    End If
                        
                    If intPeso = 9 Then
                        intPeso = 10
                    End If
                Next
                
                intResto = intSoma Mod 11
                strDigito1 = Right(CStr(intResto), 1)
                strBase2 = Left(strBase, 8) & strDigito1 & Mid(strBase, 11, 3)
            Else
                strBase = Left(Trim(strOrigem) & "000000000000", 12)
                intSoma = 0
                intPeso = 1
                
                For intPos = 1 To 8
                    intValor = CInt(Mid(strBase, intPos, 1))
                    intValor = intValor * intPeso
                    intSoma = intSoma + intValor
                    intPeso = intPeso + 1
                    
                    If intPeso = 2 Then
                        intPeso = 3
                    End If
                
                    If intPeso = 9 Then
                        intPeso = 10
                    End If
                Next
                
                intResto = intSoma Mod 11
                strDigito1 = Right(CStr(intResto), 1)
                strBase2 = Left(strBase, 8) & strDigito1 & Mid(strBase, 10, 2)
                intSoma = 0
                intPeso = 2
                
                For intPos = 11 To 1 Step -1
                    intValor = CInt(Mid(strBase, intPos, 1))
                    intValor = intValor * intPeso
                    intSoma = intSoma + intValor
                    intPeso = intPeso + 1
                
                    If intPeso > 10 Then
                        intPeso = 2
                    End If
                Next
            
                intResto = intSoma Mod 11
                strDigito2 = Right(CStr(intResto), 1)
                strBase2 = strBase2 & strDigito2
            End If
            
            If strBase2 = strOrigem Then
                ChecaInscrE = True
            End If
            
        Case "TO" ' Tocantins
            strBase = Left(Trim(strOrigem) & "00000000000", 11)
            If InStr(1, "01,02,03,99", Mid(strBase, 3, 2), vbTextCompare) > 0 Then
                strBase2 = Left(strBase, 2) & Mid(strBase, 5, 6)
                intSoma = 0
                
                For intPos = 1 To 8
                    intValor = CInt(Mid(strBase2, intPos, 1))
                    intValor = intValor * (10 - intPos)
                    intSoma = intSoma + intValor
                Next
        
                intResto = intSoma Mod 11
                strDigito1 = Right(IIf(intResto < 2, "0", CStr(11 - intResto)), 1)
                strBase2 = Left(strBase, 10) & strDigito1
                
                If strBase2 = strOrigem Then
                    ChecaInscrE = True
                End If
            End If
    End Select
End Function

 

Para usar a função clique em qualquer lugar na sua planilha do Excel e digite ChecaInscrE, e passe o número da inscrição estadual, conforme abaixo:

Validar Inscrição Estadual Excel

Você também pode implementar a função para que fique disponível sempre que abrir o Excel, criando assim um suplemento no Excel, veja neste artigo: https://www.guiadoexcel.com.br/como-criar-funcoes-proprias-no-excel-com-vba/

Clicando no botão “Exemplo de formulário” você tem também um exemplo do uso da função de validação de inscrição estadual em um formulário VBA, basta escolher a UF e digitar a Inscrição estadual para que seja retornado se o mesmo é válido.

Validar Inscrição Estadual Excel 3

Para testar inscrições estaduais você também pode usar este site: https://www.4devs.com.br/gerador_de_inscricao_estadual

O código fonte utilizado para a validação das inscrições estaduais foi traduzido para VBA, atualizado no caso do estado de Pernambuco e feita a indentação, baseado no fonte de: https://www.codigofonte.com.br/codigos/validar-inscricao-estadual-para-qualquer-estado

Para baixar a planilha exemplo com o código implementado gratuitamente clique no botão abaixo.

Abraço

Marcos Rieper


Clique aqui e leia mais sobre Excel VBA. https://www.guiadoexcel.com.br/vba/ O Guia do Excel foi criado por Marcos Rieper e oferece artigos, dicas, tutoriais e modelos de planilhas prontas. Aqui você encontra tudo sobre Excel, seja de nível básico, intermediário,  avançado e VBA. O Guia do Excel oferece diversos materiais completamente gratuitos para download. Navegue em nosso site e confira! Conheça também a nossa Loja do Excel https://loja.guiadoexcel.com.br/
Cursos

Curso Excel Básico – 1 ano de acesso

R$99,00

COMPRAR
Cursos

Curso Excel Completo – Curso Excel Básico + Curso Excel Avançado – Acesso Vitalício

R$218,00 R$179,00

COMPRAR
Cursos

Curso Excel Master – Curso Excel Básico + Curso Excel Avançado + Curso VBA Excel + LP – Acesso Vitalício

R$357,00 R$249,00

COMPRAR
Cursos

Curso Excel PRO – Curso Excel Avançado + Curso VBA Excel + Lógica de programação – Acesso Vitalício

R$258,00 R$199,00

COMPRAR

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.