Pessoal preciso da ajuda dos companheiros para imcrementar o seguinte código:
Function CodBarrasBB(strBanco As String, strMoeda As String, sngValor As Single, strCampoLivre As String) As String
'Funçao para Cálculo do dígito do código de barras
'Desenvolvida por Jonnhi Oliveira Ramos
'Alterado por Gerson Luiz Rodrigues em 30 de setembro de 2011,para adequação com as orientações do BB
'Forma-se o código de Barras da seguinte maneira:
'01 -> 03 (3): Banco (001 - Banco do Brasil)
'04 -> 04 (1): Moeda (9 - Real)
'05 -> 05 (1): DV (Dígito verificador módulo 11)
'06 -> 10 (4): Fator de Vencimento
'11 -> 19 (12,2): Valor (Ex.: 14150 - sem vírgula decimal, Lê-se 141,50)
'20 -> 44 (25): Campo Livre (O conteúdo dependerá do banco)
'CAMPO LIVRE BANCO DO BRASIL CART 18
'20 -> 25 (6) : Convênio
'26 -> 42 (17): Nosso Número
'43 -> 44 (2) : Serviço (Fixo 21)
'Última alteração: 11/11/97
'Recebe "0000000000000000000000000000000000000000000" e
'retorna "0000X000000000000000000000000000000000000000"
Dim varCaracter As Variant, strSequencia As String
Dim i As Integer, I2 As Integer, intNum As Integer, intNumT As Integer
Dim intResto As Integer, intDAC As Integer
'Monta a Sequência
sngValor = Int((sngValor * 100))
strCampoLivre = Format(strCampoLivre, "0000000000000000000000000")
strSequencia = strBanco & strMoeda & strCampoLivre & Format(sngValor, "00000000000000")
Debug.Print strSequencia
'Calcula o dígito de Autoconferência do Código de Barras
I2 = 2
For i = 1 To 43
varCaracter = Mid(Right(strSequencia, i), 1, 1)
If I2 > 9 Then
I2 = 2
intNum = 0
End If
intNum = varCaracter * I2
intNumT = intNumT + intNum
I2 = I2 + 1
Next
intResto = intNumT Mod 11
If intResto = 0 Or intResto = 1 Then
intDAC = 1
Else
intDAC = 11 - intResto
End If
CodBarrasBB = Left(strSequencia, 4) & intDAC & Right(strSequencia, 39)
End Function
Function CodBarrasBB(strBanco As String, strMoeda As String, sngValor As Single, strCampoLivre As String) As String
'Funçao para Cálculo do dígito do código de barras
'Desenvolvida por Jonnhi Oliveira Ramos
'Alterado por Gerson Luiz Rodrigues em 30 de setembro de 2011,para adequação com as orientações do BB
'Forma-se o código de Barras da seguinte maneira:
'01 -> 03 (3): Banco (001 - Banco do Brasil)
'04 -> 04 (1): Moeda (9 - Real)
'05 -> 05 (1): DV (Dígito verificador módulo 11)
'06 -> 10 (4): Fator de Vencimento
'11 -> 19 (12,2): Valor (Ex.: 14150 - sem vírgula decimal, Lê-se 141,50)
'20 -> 44 (25): Campo Livre (O conteúdo dependerá do banco)
'CAMPO LIVRE BANCO DO BRASIL CART 18
'20 -> 25 (6) : Convênio
'26 -> 42 (17): Nosso Número
'43 -> 44 (2) : Serviço (Fixo 21)
'Última alteração: 11/11/97
'Recebe "0000000000000000000000000000000000000000000" e
'retorna "0000X000000000000000000000000000000000000000"
Dim varCaracter As Variant, strSequencia As String
Dim i As Integer, I2 As Integer, intNum As Integer, intNumT As Integer
Dim intResto As Integer, intDAC As Integer
'Monta a Sequência
sngValor = Int((sngValor * 100))
strCampoLivre = Format(strCampoLivre, "0000000000000000000000000")
strSequencia = strBanco & strMoeda & strCampoLivre & Format(sngValor, "00000000000000")
Debug.Print strSequencia
'Calcula o dígito de Autoconferência do Código de Barras
I2 = 2
For i = 1 To 43
varCaracter = Mid(Right(strSequencia, i), 1, 1)
If I2 > 9 Then
I2 = 2
intNum = 0
End If
intNum = varCaracter * I2
intNumT = intNumT + intNum
I2 = I2 + 1
Next
intResto = intNumT Mod 11
If intResto = 0 Or intResto = 1 Then
intDAC = 1
Else
intDAC = 11 - intResto
End If
CodBarrasBB = Left(strSequencia, 4) & intDAC & Right(strSequencia, 39)
End Function