Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

HelderREC

Membros Juniores
  • Total de itens

    17
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

2

Sobre HelderREC

  • Data de Nascimento 05-11-1972 (45 anos)

Informações gerais

  • Cidade e Estado
    Recife
  1. Edson, Obrigado pela resposta! Dos três pontos que você citou: 1 - Você está certo...fiz a alteração 2 - Fiz também essa alteração para formatar a data. Tentei as duas opções segeridas: "Format" e "CStr". Ainda assim não deu certo. 3 - Eu utilizei Long por ser a de maior abrangência, mas acho que poderia ser Double (alguma sugestão diferente? não conheço muito bem) Testei o código da Função com essas alterações mas mesmo assim retorna #VALOR! Quanto ao arquivo, não consegui anexar pois é um ".xlsm" (pelo que vi não é permitido no site) Mas os dados são os seguintes: Colunas E e F Datas e Valor da taxa dirárias. (Coluna E no formato de data dd/mm/yy), Coluna F número com "0,000000") Exemplo: Resumindo o objetivo da Função: Encontrar a taxa acumulada CDI em um range de taxas diárias * um percentual do CDI. Os dados de entrada na função são: 1)Data inicial 2)Data final 3)PercenualCDI (em alguma outra célula qualquer formato 0,00 - 0,98 por exemplo) O código então deve buscar a data inicial e final na coluna E e retornar o range (intervalo) de taxas correspondente da coluna F. Então executa o cálculo abaixo CDI = 1 For Each Cell In taxas CDI = CDI * (Cell.Value / 100 * PercentualCDI + 1) Next Cell O código do cálculo está correto. O problema está range "taxas", que não está funcionando.
  2. Olá pessoal Tenho um problema em uma função que fiz. Sempre retorna erro "#VALOR!". O código da função é: Function CDI(DataInicial As Date, DataFinal As Date, PercentualCDI As Long) As Long Dim a, b As Date Dim diini As Integer, difin As Integer Dim s, e, taxas, Cell As Range With Planilha3.Range("E1:E10000") s = Range(.Find(DataInicial, LookIn:=xlValues).Address).Row e = Range(.Find(DataFinal, LookIn:=xlValues).Address).Row - 1 End With Set taxas = Planilha3.Range(Cells(diini, 6), Cells(difin, 6)) CDI = 1 For Each Cell In taxas CDI = CDI * (Cell.Value / 100 * PercentualCDI + 1) Next Cell End Function Para testar o cálulo executado eu criei uma sub que está funcionando bem. Mas gostaria de ter a mesma funcionalidade em uma função A Sub que fiz é essa: Sub CDI1() Dim s, e, taxas As Range Dim DtIni, DtFim As Date Dim CDI, percuntualCDI As Long DtIni = Range("a1").Value DtFim = Range("a2").Value PercentualCDI = Range("a3") With Planilha3.Range("E1:E10000") s = Range(.Find(DtIni, LookIn:=xlValues).Address).Row e = Range(.Find(DtFim, LookIn:=xlValues).Address).Row - 1 End With Set taxas = Planilha3.Range(Cells(s, 6), Cells(e, 6)) CDI = 1 For Each Cell In taxas CDI = CDI * (Cell.Value / 100 * PercentualCDI + 1) Next Cell Range("A4") = CDI End Sub Eu acho que o erro na FUNÇÃO está relacionado a declaração das variáveis...mas não sei como resolver esse erro. Alguém pode me ajudar? obrigado Helder
  3. Bom dia! Tenho um código que fui construindo a partir de pesquisas aqui no fórum, mas agora tenho que recorrer a vocês novamente. As dúvidas estão no arquivo, que envio abaixo pelo sendSapce. http://www.sendspace.com/file/b1v94e segue também o código por aqui: Sub EnviarEmail() ' ' ' Dim x As Integer Dim y As Integer Sheets("Funcionario").Select Range("A1").Select Selection.End(xlDown).Select x = ActiveCell.Row For d = 2 To x Sheets("Dados").Select ActiveSheet.Range("$A$1:$R$15").AutoFilter Field:=13, Criteria1:="" 'Tem que ser igual a célula B & d da sheet Funcionário Range("A1:E15").Slect ' tem que ser na verdade o resultado do filtro Selection.Copy Sheets("Body").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Set myOlApp = CreateObject("Outlook.Application") Set myItem = myOlApp.CreateItem(olMailItem) Set myAttachments = myItem.Attachments With myItem .To = Range("B" & d).Value 'DESTINATÁRIO .Subject = "Fatura Cartão Novembro 2012" '"Licença " & Range("A" & d).Value 'ASSUNTO .Body = "" ' No Corpor do e-mail preciso: um txto fixo na primeira linha, próxima linha em branco, em seguida os dados da plan Body .Save .Send End With Next d End Sub
  4. Márcio Muito obrigado mesmo! o trabalho ficou perfeito e considero finalizado. Essa dúvida final dos registros, eu vejo no momento de validar com o banco (quando eu souber, compartilho contigo). Novamente muito obrigado pela ajuda!! abraço Helder
  5. Boa tarde Márcio! Só estou com uma dúvida de interpretação com relação ao total de registros. É a somatória da quantidade de tipos de registros ou a quantidade total de linhas geradas? temos os seguintes tipos de registros: 1 - Header 2 - Detalhe1 3 - Detalhe6 4 - Detalhe7 5 - Detalhe11 6 - Detalhe21 7 - Trailer Considerando que temos 5 portadores, teríamos: 1 linha de Header 5 linhas de detalhe1 5 linhas de detalhe6 5 linhas de detalhe7 5 linhas de detalhe11 5 linhas de detalhe21 1 linha de trailer eu tinha interpretado que o trailer seria 1) a contagem do total de registros tipo 1 - ok, isso está perfeito na fórmula. 2) a contagem do total de registros: Seria 7 o 32 o que se espera? abraço Helder
  6. Boa Noite Marcio segue o link com a versão atual do arquivo. Tá ficando legal!! Veja se consegue me enviar o parte do código para geração do Trailer. http://www.sendspace.com/file/rsyf1i obrigado Helder Opa Não tinha visto sua resposta. Com esse código para o trailer que você enviou, tá gerando o seguinte resultado: 000000900000000000002 Deveria ser: 999999900006000000032 pode checar por favor? obrigado Helder
  7. Olá Marcio! O código completo ficou como abaixo. O que tá faltando agora é o Trailer do arquivo Sub GravaDetalhe_1() ContaPortadores = 2 While Sheets("Dados Portadores").Range("A" & ContaPortadores).Value <> Empty Detalhe_1 = FillZeros(Sheets("Dados Portadores").Range("A" & ContaPortadores).Value, 5, True) 'SEQUENCIAL Detalhe_1 = Detalhe_1 & FillZeros("01", 2, True) 'TIPO DO DETALHE Detalhe_1 = Detalhe_1 & FillZeros("0", 1, True) 'ZERO Detalhe_1 = Detalhe_1 & FillZeros("1", 1, True) 'TIPO DE CPF Detalhe_1 = Detalhe_1 & FillZeros(Sheets("Dados Portadores").Range("C" & ContaPortadores).Value, 14, True) 'CPF DO PORTADOR Detalhe_1 = Detalhe_1 & FillZeros(Sheets("Dados Portadores").Range("G" & ContaPortadores).Value, 8, True) 'DATA NASCIMENTO Detalhe_1 = Detalhe_1 & FillSpace(Sheets("Dados Portadores").Range("B" & ContaPortadores).Value, 60, False) 'NOME PORTADOR Detalhe_1 = Detalhe_1 & FillSpace(Sheets("Dados Portadores").Range("H" & ContaPortadores).Value, 8, False) 'MATRÍCULA Detalhe_1 = Detalhe_1 & FillSpace(Sheets("Dados Portadores").Range("I" & ContaPortadores).Value, 9, False) 'LOCALIZAÇÃO Detalhe_1 = Detalhe_1 & FillSpace(" ", 9, True) 'BRANCOS Detalhe_1 = Detalhe_1 & FillSpace(Sheets("Dados Portadores").Range("J" & ContaPortadores).Value, 17, False) 'USO DA EMPRESA Detalhe_1 = Detalhe_1 & FillZeros(Sheets("Dados Gerais").Range("B12").Value, 4, True) 'AGÊNCIA Detalhe_1 = Detalhe_1 & FillSpace(Sheets("Dados Gerais").Range("B13").Value, 1, False) 'DV-AGÊNCIA Detalhe_1 = Detalhe_1 & FillSpace(" ", 11, False) 'BRANCOS Detalhe_6 = FillZeros(Sheets("Dados Portadores").Range("A" & ContaPortadores).Value, 5, True) 'SEQUENCIAL Detalhe_6 = Detalhe_6 & FillZeros("06", 2, True) 'TIPO DO DETALHE Detalhe_6 = Detalhe_6 & FillSpace(Sheets("Dados Gerais").Range("B20").Value, 60, False) 'LOGRADOURO/Nº/COMPLEMENTO Detalhe_6 = Detalhe_6 & FillSpace(Sheets("Dados Gerais").Range("B21").Value, 30, False) 'DISTRITO/BAIRRO Detalhe_6 = Detalhe_6 & FillZeros(Sheets("Dados Gerais").Range("B22").Value, 8, True) 'CEP Detalhe_6 = Detalhe_6 & FillSpace(Sheets("Dados Gerais").Range("B23").Value, 4, False) 'DDD Detalhe_6 = Detalhe_6 & FillSpace(Sheets("Dados Gerais").Range("B24").Value, 9, False) 'TELEFONE Detalhe_6 = Detalhe_6 & FillZeros(Sheets("Dados Gerais").Range("B25").Value, 9, True) 'CAIXA POSTAL Detalhe_6 = Detalhe_6 & FillZeros(Sheets("Dados Gerais").Range("B26").Value, 2, True) 'SITUAÇÃO DO IMOVEL Detalhe_6 = Detalhe_6 & FillZeros(Sheets("Dados Portadores").Range("K" & ContaPortadores).Value, 6, True) 'INICIO DE RESIDENCIA Detalhe_6 = Detalhe_6 & FillSpace(" ", 15, False) 'BRANCOS Detalhe_7 = FillZeros(Sheets("Dados Portadores").Range("A" & ContaPortadores).Value, 5, True) 'SEQUENCIAL Detalhe_7 = Detalhe_7 & FillZeros("07", 2, True) 'TIPO DO DETALHE Detalhe_7 = Detalhe_7 & FillSpace(Sheets("Dados Gerais").Range("B20").Value, 60, False) 'LOGRADOURO/Nº/COMPLEMENTO Detalhe_7 = Detalhe_7 & FillSpace(Sheets("Dados Gerais").Range("B21").Value, 30, False) 'DISTRITO/BAIRRO Detalhe_7 = Detalhe_7 & FillZeros(Sheets("Dados Gerais").Range("B22").Value, 8, True) 'CEP Detalhe_7 = Detalhe_7 & FillSpace(Sheets("Dados Gerais").Range("B23").Value, 4, False) 'DDD Detalhe_7 = Detalhe_7 & FillSpace(Sheets("Dados Gerais").Range("B24").Value, 9, False) 'TELEFONE Detalhe_7 = Detalhe_7 & FillSpace(Sheets("Dados Gerais").Range("B27").Value, 20, False) 'RAMAL Detalhe_7 = Detalhe_7 & FillZeros(Sheets("Dados Gerais").Range("B25").Value, 9, True) 'CAIXA POSTAL Detalhe_7 = Detalhe_7 & FillSpace(" ", 3, False) 'BRANCOS Detalhe_11 = FillZeros(Sheets("Dados Portadores").Range("A" & ContaPortadores).Value, 5, True) 'SEQUENCIAL Detalhe_11 = Detalhe_11 & FillZeros("11", 2, True) 'TIPO DO DETALHE Detalhe_11 = Detalhe_11 & FillSpace(Sheets("Dados Gerais").Range("B30").Value, 14, False) 'CNPJ DO CENTRO DE CUSTO Detalhe_11 = Detalhe_11 & FillZeros(Sheets("Dados Gerais").Range("B31").Value, 9, True) 'NÚMERO IDENTIFICADOR DO CENTRO DE CUSTO Detalhe_11 = Detalhe_11 & FillZeros(Sheets("Dados Gerais").Range("B32").Value, 9, True) 'NÚMERO IDENTIFICADOR DA UNID. DE FATURAMENTO Detalhe_11 = Detalhe_11 & FillSpace(Sheets("Dados Portadores").Range("O" & ContaPortadores).Value, 19, False) 'NOME DO PORTADOR PARA CARTÃO Detalhe_11 = Detalhe_11 & FillZeros(Sheets("Dados Gerais").Range("B39").Value, 9, True) 'LIMITE GERAL DO PORTADOR, SEM CENTAVOS Detalhe_11 = Detalhe_11 & FillZeros(Sheets("Dados Gerais").Range("B33").Value, 1, True) 'CÓDIGO DO ENDE PARA ENVIO DO PIN Detalhe_11 = Detalhe_11 & FillSpace(Sheets("Dados Gerais").Range("B34").Value, 1, False) 'CÓDIGO DO ENDEREÇO PARA DEMONSTRATIVO Detalhe_11 = Detalhe_11 & FillSpace(Sheets("Dados Gerais").Range("B35").Value, 1, False) 'PERMISSÃO PARA UTILIZAÇÃO NO EXTERIOR (S/N) Detalhe_11 = Detalhe_11 & FillSpace(Sheets("Dados Gerais").Range("B36").Value, 1, False) 'PERMISSÃO PARA COMPRA PARCELADA (S/N) Detalhe_11 = Detalhe_11 & FillSpace(Sheets("Dados Gerais").Range("B37").Value, 1, False) 'PERMISSÃO PARA USO NA INTERNET E TELEFONE (S/N) Detalhe_11 = Detalhe_11 & FillSpace(Sheets("Dados Gerais").Range("B38").Value, 1, False) 'PERMISSÃO PARA SAQUES (S/N) Detalhe_11 = Detalhe_11 & FillZeros(Sheets("Dados Gerais").Range("B40").Value, 9, True) 'VALOR MÁXIMO POR TRANSAÇÃO Detalhe_11 = Detalhe_11 & FillZeros(Sheets("Dados Gerais").Range("B41").Value, 9, True) 'VR.MÁX.TRANS.INTERNET/FONE Detalhe_11 = Detalhe_11 & FillZeros(Sheets("Dados Gerais").Range("B42").Value, 9, True) 'VR.MÁX.TRANS.EXTERIOR Detalhe_11 = Detalhe_11 & FillZeros(Sheets("Dados Gerais").Range("B43").Value, 5, True) 'CÓDIGO DA OPERADORA Detalhe_11 = Detalhe_11 & FillZeros(Sheets("Dados Gerais").Range("B44").Value, 3, True) 'DDD DO TELEFONE CELULAR Detalhe_11 = Detalhe_11 & FillZeros(Sheets("Dados Gerais").Range("B45").Value, 9, True) 'NÚMERO DO TELEFONE CELULAR Detalhe_11 = Detalhe_11 & FillZeros(Sheets("Dados Gerais").Range("B46").Value, 2, True) 'TIPO DE CADASTRO DE SENHA Detalhe_11 = Detalhe_11 & FillSpace(" ", 31, False) 'BRANCOS Detalhe_21 = FillZeros(Sheets("Dados Portadores").Range("A" & ContaPortadores).Value, 5, True) 'SEQUENCIAL Detalhe_21 = Detalhe_21 & FillZeros("21", 2, True) 'TIPO DO DETALHE Detalhe_21 = Detalhe_21 & FillZeros(Sheets("Dados Gerais").Range("B53").Value, 2, True) 'CÓDIGO DO TIPO DE ESTABELECIMENTO Detalhe_21 = Detalhe_21 & FillZeros(Sheets("Dados Gerais").Range("B54").Value, 7, True) 'LIMITE DIÁRIO, SEM CENTAVOS Detalhe_21 = Detalhe_21 & FillZeros(Sheets("Dados Gerais").Range("B55").Value, 7, True) 'LIMITE SEMANAL, SEM CENTAVOS Detalhe_21 = Detalhe_21 & FillZeros(Sheets("Dados Gerais").Range("B56").Value, 7, True) 'LIMITE MENSAL, SEM CENTAVOS Detalhe_21 = Detalhe_21 & FillSpace(" ", 120, False) 'BRANCOS ContaPortadores = ContaPortadores + 1 Print #1, Detalhe_1 Print #1, Detalhe_6 Print #1, Detalhe_7 Print #1, Detalhe_11 Print #1, Detalhe_21 Wend End Sub O header ficou assim: Sub GravaHeader() Header = FillZeros(Sheets("Dados Gerais").Range("B5").Value, 7, True) ' Zeros Header = Header & FillZeros(Sheets("Dados Gerais").Range("B6").Value, 8, True) ' Data da Remessa Header = Header & FillSpace(Sheets("Dados Gerais").Range("B7").Value, 8, False) ' Nome do Arquivo Header = Header & FillZeros(Sheets("Dados Gerais").Range("B8").Value, 9, True) ' Codigo MCI Header = Header & FillZeros(Sheets("Dados Gerais").Range("B9").Value, 5, True) ' Numero do processo Header = Header & FillZeros(Sheets("Dados Gerais").Range("B10").Value, 5, True) ' Sequencial de Remessa Header = Header & FillZeros(Sheets("Dados Gerais").Range("B11").Value, 2, True) ' Versão Layout Header = Header & FillZeros(Sheets("Dados Gerais").Range("B12").Value, 4, True) ' Agencia Header = Header & FillSpace(Sheets("Dados Gerais").Range("B13").Value, 1, False) ' DV Agencia Header = Header & FillZeros(Sheets("Dados Gerais").Range("B14").Value, 11, True) ' Conta Header = Header & FillSpace(Sheets("Dados Gerais").Range("B15").Value, 1, False) ' DV Conta Header = Header & FillSpace(" ", 89, False) ' Brancos Print #1, Header Call GravaDetalhe_1 'TRAILER ini fim records 'N.º POSIÇÕES PICTURE USAGE CONTEÚDO '1 001 A 007 9/007/ DISPLAY 9999999 (NOVES) 1 7 7 '2 008 A 012 9/005/ DISPLAY TOTAL DE CLIENTES (REGISTRO DE DETALHE TIPO 01) 8 12 5 '3 013 A 021 9/009/ DISPLAY TOTAL DE REGISTROS (INCLUSIVE HEADER E TRAILER) 13 21 9 '4 022 A 150 X/129/ DISPLAY BRANCOS 22 150 129 Trailer = FillZeros("9999999", 7, True) '9999999 (NOVES) 'Trailer = Trailer & FillZeros(Sheets("Dados Portadores").Range(A).CountA, 5, True) 'TOTAL DE CLIENTES (REGISTRO DE DETALHE TIPO 01) 'DISPLAY TOTAL DE REGISTROS (INCLUSIVE HEADER E TRAILER) ??? Trailer = Trailer & FillSpace(" ", 129, False) 'BRANCOS Print #1, Trailer Close #1 End Sub abraço Helder
  8. Boa Noite Marcio Rodrigues Consegui evoluir bem e praticamente o o material está concluído. Para finalizar, preciso de ajuda para gravar o Trailer do arquivo. (na conexão que tenho agora, estou sem acesso ao sendspace, compartilho o material mais tarde ou amanhã). Segue o que preciso do Trailer: TRAILER N.º POSIÇÕES PICTURE USAGE CONTEÚDO 1 001 A 007 9/007/ DISPLAY 9999999 (NOVES) 2 008 A 012 9/005/ DISPLAY TOTAL DE CLIENTES (REGISTRO DE DETALHE TIPO 01) 3 013 A 021 9/009/ DISPLAY TOTAL DE REGISTROS (INCLUSIVE HEADER E TRAILER) 4 022 A 150 X/129/ DISPLAY BRANCOS Obrigado Helder
  9. Marcio, com relação ao alinhamento a direita dos campos alfanuméricos, já consegui resolver. Por gentileza verificar somente os outros dois pontos. obrigado Helder
  10. Márcio Rodrigues Obrigado pela ajuda! Estamos perto de finalizar. Fiz algumas pequenas modificações e adicionei um novo módulo para a macro GravarDetalhe_06. Está funcionando parcialmente. Os dados estão se repetindo! Segue o arquivo novamente. Nele encontrará as observações que inclui e respostas para perguntas que tinha feito. http://www.sendspace.com/file/3x1s5j obrigado Helder
  11. É mais ou menos isso sim. O objetivo final é gerar um txt de acordo ao Layout que está completo na primeira plan do arquivo que enviei hoje. Os dados estão também nesse arquivo. o arquivo txt tem vários "tipos de registros", e devem ser ordenados de forma crescente de acordo ao primeiro sequencial (que é cada portador) e em seguida ao tipo de registro. obrigado Helder
  12. Márcio, Vai um arquivo mais decente com o que realmente preciso. Acho que agora fica mais claro. Achei esse código que é bem perto do que estou precisando...a ideia e mais ou menos essa, só que eu vou ter mais tipos de registros. http://www.sendspace.com/file/mwlccs Private Type Registro_01 Tipo_Registro_01 As String * 2 ' "01" Matricula As String * 7 Nome As String * 30 Endereco As String * 40 Cidade As String * 15 Valor As String * 10 ' duas últimas posições representam os centavos End Type Public Sub Grava_Arquivo() Dim NomeArq As String Dim Meu_Reg_01 As Registro_01 Dim AreaTrab As Rangei Dim i As Integer NomeArq = "C:\Meus documentos\Testes\ArqTexto.txt" Open NomeArq For Output As #1 ' Se precisar gravar header de arquivo, grave aqui Print #1, "Teste de gravação de arquivo" Set AreaTrab = Range("a1:e4") Meu_Reg_01.Tipo_Registro_01 = "01" For i = 2 To AreaTrab.Rows.Count With Meu_Reg_01 .Matricula = Format(AreaTrab.Cells(i, 1).Value, "0000000") .Nome = AreaTrab.Cells(i, 2).Value .Endereco = AreaTrab.Cells(i, 3).Value .Cidade = AreaTrab.Cells(i, 4).Value .Valor = Format(Int(AreaTrab.Cells(i, 5).Value * 100), "0000000000") Print #1, .Tipo_Registro_01; _ .Matricula; _ .Nome; _ .Endereco; _ .Cidade; _ .Valor End With Next i ' Se precisar gravar trailer de arquivo, grave aqui. Print #1, "Fim do arquivo" Close #1 End Sub
  13. Jeanvet boa noite baixei os arquivo do dropbox e achei que estão corretos e finalizados. Tá faltando algo ainda? abraço helder
  14. Envia uma relação completa para esses 5 primeiros valores de hematócritos. Enviar também um modelo do world (que imagino seja o resultado final do trabalho).
  15. Seguem os arquivos para facilitar a análise http://www.sendspace.com/file/fpn4vt http://www.sendspace.com/file/l62vwu Obrigado a quem possa ajudar!! Helder

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×