:D  Ola pessoal com um pouquinho daqui e um pouqunho dali eu consegui fazer e segue abaixo o codigo.  Option Explicit Dim DV11 As Integer   Public Function MontarBarra(CodAgencia As String, CodCedente As String, NossoNumero As String, ValorTotal, DataVencimento As Date)         Dim CodBarra As String     Dim DataBase As Date     Dim CampoLivre As String     Dim DataFator As Integer               CodAgencia = Format(CodAgencia, "0000")     CodCedente = Format(CodCedente, "000000")     NossoNumero = Format(NossoNumero, "990000000000000000")          'FORMATA O VALOR     ValorTotal = Replace(ValorTotal, ",", "")     ValorTotal = Replace(ValorTotal, ".", "")     ValorTotal = Format(ValorTotal, "0000000000")          'Calcula a data e transforma     DataBase = CDate("7/10/1997")     DataFator = DateDiff("d", DataBase, Format(DataVencimento, "dd/mm/yyyy"))          CampoLivre = "1" & CodCedente & NossoNumero               CodBarra = "104" & "9" & DataFator & ValorTotal & CampoLivre          DV11 = Calculo_DV11(CodBarra)          CodBarra = "104" & "9" & DV11 & DataFator & ValorTotal & CampoLivre          MontarBarra = CodBarra End Function   Public Function MontarLinhaDigitavel(CodigoBarra As String)          Dim seq1 As String      Dim DV10 As String     Dim Campo1 As String     Dim Campo2 As String     Dim Campo3 As String         'MONTA PRIMEIRO CAMPO DA LINHA DIGITAVEL     seq1 = "104" & "9" & Mid(CodigoBarra, 20, 5)     DV10 = Calculo_DV10(seq1)     Campo1 = Mid(seq1, 1, 5) & "." & Mid(seq1, 6, 5) & Trim(DV10)          'MONTA SEGUNDO CAMPO DA LINHA DIGITAVEL     seq1 = Mid(CodigoBarra, 25, 10)     DV10 = Calculo_DV10(seq1)     Campo2 = Mid(seq1, 1, 5) & "." & Mid(seq1, 6, 5) & Trim(DV10)               'MONTA TERCEIRO CAMPO DA LINHA DIGITAVEL     seq1 = Mid(CodigoBarra, 35, 10)     DV10 = Calculo_DV10(seq1)     Campo3 = Mid(seq1, 1, 5) & "." & Mid(seq1, 6, 5) & Trim(DV10)          MontarLinhaDigitavel = Campo1 & " " & Campo2 & " " & Campo3 & " " & DV11 & " " & Mid(CodigoBarra, 6, 14)                End Function  Function Calculo_DV10(strNumero As String) As String     'declara As variáveis     Dim intContador As Integer          Dim intNumero As Integer          Dim intTotalNumero As Integer          Dim intMultiplicador As Integer          Dim intResto As Integer          ' se não for um valor numerico sai da função     If Not IsNumeric(strNumero) Then       Calculo_DV10 = ""       Exit Function     End If          'inicia o multiplicador     intMultiplicador = 2          'pega cada caracter do numero a partir da direita     For intContador = Len(strNumero) To 1 Step -1          'extrai o caracter e multiplica pelo multiplicador     intNumero = Val(Mid(strNumero, intContador, 1)) * intMultiplicador          ' se o resultado for maior que nove soma os algarismos do resultado     If intNumero > 9 Then       intNumero = Val(Left(intNumero, 1)) + Val(Right(intNumero, 1))     End If          'soma o resultado para totalização     intTotalNumero = intTotalNumero + intNumero          'se o multiplicador for igual a 2 atribuir valor 1 se for 1 atribui 2     intMultiplicador = IIf(intMultiplicador = 2, 1, 2)          Next              Dim DezenaSuperior As Integer         If intTotalNumero < 10 Then             DezenaSuperior = 10         Else             DezenaSuperior = 10 * (Val(Left(CStr(intTotalNumero), 1)) + 1)         End If         intResto = DezenaSuperior - intTotalNumero          'verifica as exceções ( 0 -> DV=0 )     Select Case intResto       Case 0          Calculo_DV10 = "0"       Case Else          Calculo_DV10 = Str(intResto)     End Select  End Function   Function Calculo_DV11(strNumero As String) As String 'declara as variáveis Dim intContador As Integer  Dim intNumero As Integer  Dim intTotalNumero As Integer  Dim intMultiplicador As Integer  Dim intResto As Integer  ' se não for um valor numerico sai da função If Not IsNumeric(strNumero) Then   Calculo_DV11 = ""   Exit Function End If  'inicia o multiplicador intMultiplicador = 9  'pega cada caracter do numero a partir da direita For intContador = Len(strNumero) To 1 Step -1  'extrai o caracter e multiplica prlo multiplicador intNumero = Val(Mid(strNumero, intContador, 1)) * intMultiplicador  'soma o resultado para totalização intTotalNumero = intTotalNumero + intNumero  'se o multiplicador for maior que 2 decrementa-o caso contrario atribuir valor padrão original intMultiplicador = IIf(intMultiplicador > 2, intMultiplicador - 1, 9)  Next  'calcula o resto da divisao do total por 11 intResto = intTotalNumero Mod 11  'verifica as exceções ( 0 -> DV=0    10 -> DV=X (para o BB) e retorna o DV Select Case intResto   Case 0     Calculo_DV11 = "0"   Case 10     Calculo_DV11 = "X"   Case Else     Calculo_DV11 = Str(intResto) End Select  End Function