Ir ao conteúdo
  • Cadastre-se

JOAO BATISTA DEJANO

Membro Pleno
  • Posts

    45
  • Cadastrado em

  • Última visita

Tudo que JOAO BATISTA DEJANO postou

  1. Olá Pessoal!! Consegui fazer uma macro para entrar com as datas sem digitar as barras e se quiser pode digitar as barras também. No meu caso eu limitei uma parte da planilha onde vou usar isso. Algumas limitações de tempo que eu coloquei é que no meu caso isso é util. Tentei fazer correção do que é digitado também. Fiquem a vontade para fazer correções e me dizer os erros o gafes que eu cometi. Como eu ja disse aqui no forum , estou estudando vba. Sou bem iniciante. Espero que sirva para alguma coisa. Private Sub Worksheet_Change(ByVal Target As Excel.Range) ' Função para entrar Datas sem usar "/" ' Pode ser digitadas as barras se quiser. ' Por: JBD - João Batista Dejano em 22/03/2019. On Error GoTo EndMacro If Intersect(Target, Range("A2:J18")) Is Nothing Then Exit Sub If Target.Cells.Count > 1 Then Exit Sub If Target.Value = "" Then Exit Sub Application.EnableEvents = False If Len(Range(Target.Address)) = 10 Then GoTo ComBarras If Len(Range(Target.Address)) <> 8 Then GoTo Erromsg SemBarras: If Asc(Mid(Range(Target.Address), 1)) < 48 Or Asc(Mid(Range(Target.Address), 1)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 2)) < 48 Or Asc(Mid(Range(Target.Address), 2)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 3)) < 48 Or Asc(Mid(Range(Target.Address), 3)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 4)) < 48 Or Asc(Mid(Range(Target.Address), 4)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 5)) < 48 Or Asc(Mid(Range(Target.Address), 5)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 6)) < 48 Or Asc(Mid(Range(Target.Address), 6)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 7)) < 48 Or Asc(Mid(Range(Target.Address), 7)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 8)) < 48 Or Asc(Mid(Range(Target.Address), 8)) > 57 Then GoTo Erromsg If Left((Range(Target.Address)), 2) > 31 Or Left((Range(Target.Address)), 2) < 1 Then GoTo Erromsg If Mid((Range(Target.Address)), 3, 2) > 12 Or Mid((Range(Target.Address)), 3, 2) < 1 Then GoTo Erromsg Target = Format([Target], "00/00/0000") If Format(Range(Target.Address), 0) < 14611 Or Format(Range(Target.Address), 0) > Format(Range("K3"), 0) Then GoTo Erromsg Else: GoTo EndMacro End If ComBarras: If Asc(Mid(Range(Target.Address), 1)) < 48 Or Asc(Mid(Range(Target.Address), 1)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 2)) < 48 Or Asc(Mid(Range(Target.Address), 2)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 4)) < 48 Or Asc(Mid(Range(Target.Address), 4)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 5)) < 48 Or Asc(Mid(Range(Target.Address), 5)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 7)) < 48 Or Asc(Mid(Range(Target.Address), 7)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 8)) < 48 Or Asc(Mid(Range(Target.Address), 8)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 9)) < 48 Or Asc(Mid(Range(Target.Address), 9)) > 57 Then GoTo Erromsg If Asc(Mid(Range(Target.Address), 10)) < 48 Or Asc(Mid(Range(Target.Address), 10)) > 57 Then GoTo Erromsg If Left((Range(Target.Address)), 2) > 31 Or Left((Range(Target.Address)), 2) < 1 Then GoTo Erromsg If Mid((Range(Target.Address)), 3, 1) <> "/" Or Mid((Range(Target.Address)), 6, 1) <> "/" Then GoTo Erromsg If Mid((Range(Target.Address)), 4, 2) > 12 Or Mid((Range(Target.Address)), 4, 2) < 1 Then GoTo Erromsg If Format(Range(Target.Address), 0) < 14611 Or Format(Range(Target.Address), 0) > Format(Range("K3"), 0) Then GoTo Erromsg Else: GoTo EndMacro End If Erromsg: MsgBox "Você não entrou com uma data válida." Range(Target.Address).ClearContents EndMacro: Application.EnableEvents = True End Sub
  2. Ola Pessoal!!! Gente, me socorre aqui para eu tentar entender isso: Eu fiz a seguinte rotina no vba: If Left((Range(Target.Address)), 2) > 31 Or Mid((Range(Target.Address)), 3, 1) <> "/" Then GoTo Erromsg If Mid((Range(Target.Address)), 4, 2) > 12 Or Mid((Range(Target.Address)), 4, 2) < 1 Then GoTo Erromsg If Mid((Range(Target.Address)), 6, 1) <> "/" Then GoTo Erromsg ' If Format(Range(Target), 0) < 14611 Then GoTo Erromsg ' If Format(Range(Target), 0) > Format(Range("J3"), 0) Then GoTo Erromsg Range("D20") = Format(Range("D4"), 0) Range("J20") = Format(Range("J3"), 0) Nela eu verifico se o terceiro e o 6 digito são iguais a barras (/). Se não for eu vou para mensagem de erro. Tambem verifico se os dois primeiros caracteres é maior que 31 e os 4º e 5º é maior que 12. Isso tudo funciona perfeitamente. As duas linhas seguintes eu estava comparando datas, então tentei transforma-las em serial. Para eu saber se o formato funcionava eu coloquei as outras duas linhas que faz isso sem o if. Assim nessas células ( D20 e J20) aparece a data em serial. E funciona certinho. Mas se eu usar as duas linhas de comparação das datas, alem delas não funcionar as outras que transforma em serial também não. Eu até ache que fosse por erro e o programa estava saltando para o Erromsg. Mas para checar isso eu coloquei no lugar da barra uma letra e assim ele deu a mensagem de erro de digitação. "voce não digitou uma data valida" Também transferir as duas linhas para a rotina de erromsg para ver se ai ala mudava a celula D20 ou J20 e nada. Alguem sabe para onde o programa está indo. Agradecimentos antecipados.
  3. Ola Pessoal!!! Saudações Mestrãos!!! É o seguinte: Nesse caso eu testei com o excel em branco. Abri o programa e só utilizei a célula D4 e G4 para depois eu fazer um datadif, para ver se ele calculava. Bem, eu consegui descobri o que estava errado. Se você formatar a célula como texto, ele da o resultado: mm/dd/yyyy. Se você formatar como geral ele da o resultado dd/mm/yyyy que é o que eu quero. Se você formatar a célula como numero ele dá o resultado serial. Mas para mim já valeu. Vou montar o resto da Macro dessa forma que economiza bastante comando. Quando eu salvar as entradas de dados inseridos e transporta-los para outra parte da planilha, eu formato as células como desejado. Vou postando aqui os erros e acertos. Obrigado por equanto.
  4. Ola Pessoal!!! E aí grande mestre OsvaldoMP!! Essa informação que você postou foi de grande valia. Já fiz vários testes com problemas que eu tive anterior e me solucionou bem os problemas. Inclusive, deixaria a macro mais simples. Aprendi bastante. Mas uma coisa que eu queria saber é como eu faço para mudar de formato americano para português brasileiro simples. Se houver, é claro. Ou seja: dd/mm/yyyy ao invés de mm/dd/yyyy. Ja verifiquei na net, tem, mais é um tanto quanto grande. Agradecimentos antecipados!
  5. Olá Pessoal!! Grande Patropi!! Obrigado pela ajuda. Infelizmente amigo, essa macro não quis funcionar comigo. Acredito que eu tenha cometido algum erro. Sou muito principiante ainda. Eu não consegui ver onde ela direciona o resultado para a celula "D4". Não dá erro, mas não acontece nada também. Mas peguei uma ideia dela e funcionou. Ficou bem simples assim: Private Sub Worksheet_Change(ByVal Target As Range) If Target = "" Then Exit Sub If Len(Target) = 10 Then Exit Sub If Not Intersect(Target, Range("A3:J18")) Is Nothing Then Dim firstcel, midcel, finalcel, celula Select Case Target.Address Case "$I$3": Call data Case "$D$4": Call nascimento Case "$I$4": Call requerimento Case "$D$7": Call emprego_entrada Case "$G$7": Call emprego_saida Case "$E$9": Call especial_inicio Case "$G$9": Call especial_fim End Select End If End Sub ______________________________________________________________________________________________________ Sub nascimento() firstcel = Left(Range("D4"), 2) midcel = Mid(Range("D4"), 3, 2) finalcel = Right(Range("D4"), 4) celula = firstcel & "/" & midcel & "/" & finalcel Range("D4") = celula End Sub ------------------------------------------------------------------------------------------------------------------------------------------------------------------ Eu penso que o programa fica fazendo um loop em cima da celula alvo (target). Assim e limitei o tamanho dela em 10 caracteres. Agora vou continuar estudando a macro para colocar as verificações de erro que aparece com a digitação. Aceito sugestões
  6. Bem Pessoal! Acabei de descobrir que isso é porque eu estou usando a mesma celula, tanto para pegar os dados como para retorna-los. Se eu mudar o destino final, colocar a variavel celula em outro celula, como a D5 por ex. funciona. Mas eu queria colocar na D4 mesmo. Vou tentando aqui.
  7. Ola Pessoal! Eu sei que isso para vocês será brincadeira, mas para mim ta sendo o fim do mundo. Fiz uma macro para manipular partes de uma celula do excel usando o vba assim: Sub nascimento() firstcel = Left(Range("D4"), 2) midcel = Mid(Range("D4"), 3, 2) finalcel = Right(Range("D4"), 4) celula = firstcel & "/" & midcel & "/" & finalcel Range("D4") = celula End sub Quando eu digito 15032019 na celula D4 deveria aparecer na mesma o seguinte: 15/03/2019 No entanto aparece: 15////2019 Ja fiz usando essas quatro variaveis, ja fiz sem as variaveis e o resultado é o mesmo. Só consegui fazer aparecer 15/3/2019 mudando a midcel assim: midcel=Mid(Range("D4"),4,1) Estou executando essa macro automaticamente quando altero a celula D4. Alguem pode me da uma luz a respeito. Agradecimentos antecipados
  8. Vou fazer. Mas não vai dar par fazer hoje. Depois eu posto aqui. To amarrado numa planilha de inss aqui. Obrigado pela dica.
  9. Ola Ciro!! Obrigado pelas ajudas! Mas ja tinha feito isso. Acho que descobri o que aconteceu. So nã sei como arrumar. É o seguinte: Se eu tentar entrar no roteador usando o IP dele eu também não consigo. Dá como se a pagina estivesse fora. Então eu comecei ver por esse caminho e achei umas informações a respeito dos arquivos do ip config. Se eu executar o ipconfig.exe também não acontece nada.Eu dei um dir ipconfig.exe/s nos dois notes e deu resultado. Ele retornou com as pastas so que demorou muito. Essa não é minha area. Sou tecnico eletrônico da USP. Nao sei muito software. So sei programar microcontroladores da microchip. Tem uma coisa que que eu ainda não testei que vi na net. E o path. O resultado que apareceu nas informações do sistema não estão corretas com a que a pessoa me passou. Acho que minha filha deve ter mudado alguma pasta de lugar. Rapaz esse note é dela e eu to ficando louco. Se tiver mais alguma informação pode me passar. vou tentando por aqui. assim, quem descobrir primeiro posta.
  10. Sim.Fiz testes com o cabo e da o mesmo problema.Aparece conectado, mas nao entra. Fiz os mesmos procedimentos que fiz com wi fi e o resultado é o mesmo. Hoje consegui um programa que verifica placa de rede e reinstala os drives. Fez tudo normal mas não entra e nem aparece o meu roteador nem a ethernet. O programa é o 3DP NET. Achou a minha placa de rede tanto do wi fi como da ethernet. Mas não consegui nada.Agradeço o seu interesse em me ajudar.
  11. Ola Pessoal! Meu note, um gateway NE56R13B com windows 8.1, de repente não conecta mais na net. Tem outros notes conectados no mesmo roteador e celulares também. Não conecta nem por cabo nem por wi fi. Apresenta uma coisas esquisitas assim: O indicador de nivel de sinal aparece claro, como se tivesse conectado. As vezes aparece a esclamação em amarelo e as vezes não.: "No entanto se você coloca o cursor em cima dele aparece: "não conectado. Ha redes disponiveis" . Se você abra a janela para ver as redes, aparece: conctado, as vezes aparece limitado. Se voce abre a janela da central de rede e compartilhamento, não tem nenhuma rede aparecendo. Nem ethernet nem wi fi. Quando você abre as configurações do adaptador então aparece o wi fi ativo. Com a configarações iguais a do outro note que funciona. Se você manda solucionar problemas, diz que ha problemas com os drivers, tanto do wi fi com da ethernet, mas eu ja reinstalei os drivers e quando verifico diz que está tudo certo e atualizado. Ja resetei com o prompt, ja tentei instalar outro via usb e nada. Uma vez eu peguei isso e era o antivirus, mas ja desinstalei o antivirus também. Não sei mais o que fazer..... Toda ajuda é bem vinda. Podem sugerir a vontade, se eu ja fiz eu falo que ja fiz. Abraços.
  12. Ola Pessoal! Meu note, um gateway NE56R13B com windows 8.1, de repente não conecta mais na net. Tem outros notes conectados no mesmo roteador e celulares também. Não conecta nem por cabo nem por wi fi. Apresenta uma coisas esquisitas assim: O indicador de nivel de sinal aparece claro, como se tivesse conectado. As vezes aparece a esclamação em amarelo e as vezes não.: "No entanto se você coloca o cursor em cima dele aparece: "não conectado. Ha redes disponiveis" . Se você abra a janela para ver as redes, aparece: conctado, as vezes aparece limitado. Se voce abre a janela da central de rede e compartilhamento, não tem nenhuma rede aparecendo. Nem ethernet nem wi fi. Quando você abre as configurações do adaptador então aparece o wi fi ativo. Com a configarações iguais a do outro note que funciona. Se você manda solucionar problemas, diz que ha problemas com os drivers, tanto do wi fi com da ethernet, mas eu ja reinstalei os drivers e quando verifico diz que está tudo certo e atualizado. Ja resetei com o prompt, ja tentei instalar outro via usb e nada. Uma vez eu peguei isso e era o antivirus, mas ja desinstalei o antivirus também. Não sei mais o que fazer..... Toda ajuda é bem vinda. Podem sugerir a vontade, se eu ja fiz eu falo que ja fiz. Abraços.
  13. Ola Pessoal!! Eu acabei encontrando o problema! Era quebra de pagina!! Eu ainda não domino bem isso, mas seis que causa uma confusão geral na impressão. Eu fui até lay-out da pagina - quebras e redefinir todas as quebras de pagina. Tive que fazer o posicionamento novamente, mas não deu mais o problema. Até mais...
  14. Ola Pessoal!! Está acontecendo uma coisa aqui comigo numa planilha que eu não consigo saber o porquê. Eu coloco as a células, linhas e colunas de modo a caber dentro de cada pagina de impressão. Ajusto quando está fora, se preciso, tiro linhas e passo para a pagina seguinte. Até ai tudo bem. Mas quando salvo e fecho o programa e mais tarde vou usar novamente, as paginas de impressão estão fora. Isto é, as vezes o cabeçalho fica na pagina anterior, as vezes as ultimas linhas( duas no máximo) vai para a pagina seguinte. Alguém poderia me ajudar nisso?? Agradecimentos antecipados João Batista.
  15. Ola amigos!!! Vocês que são mestres nesse assunto, provavelmente entenderão fácil mas para mim está um pouco complicado essa fórmula.Embora eu mesmo a fiz, por presunção, mas me deu uma dúvida terrível. Vejam a planilha: Nessa planilha eu queria somar os números da coluna H se a linha correspondente na coluna B fosse igual a "Data da entrada". É claro que tive que tirar os textos das células na coluna H, mais isso fiz de boa.Então usei a fórmula: =SOMARPRODUTO((B7:B22=B7)*(SEERRO((ESQUERDA(H7:H22;2));0))). Mas o resultado dava 39 e o correto era 36. Então olhado os resultados com o F9, percebi que ele está somando a primeira parte da formula, até o asterisco, com a segunda, obedecendo o critério. Então fiz assim: =SOMARPRODUTO((B7:B22=B7)*(SEERRO((ESQUERDA(H7:H22;2));0))-(B7:B22=B7)). Ou seja, subtrai a primeira parte e deu certo, (acho). Mas não sei porque.Segundo as explicações da fórmula que eu vi, deveria fazer a multiplicação segundo o critério e somando apenas o produto. Por gentileza, alguém pode me explicar isso?? Agradecimentos antecipados João Batista.
  16. Olá Pessoal!! Beleza Patropi!! Obrigado Osvaldomp!! Desculpem-me demorar para responder. É que aconteceu algumas coisas esquisitas aqui. No computador da faculdade, eu coloquei essa formula e não funcionou. Eu copiei e colei. Bem, com isso eu fui ver e estudar essa formula e aprendi um punhado de coisas que eu não sabia: Os dois sinais de menos, (Falso e verdadeiro, 0 e 1), também vi que se o numero não estiver do lado direito da celula ele é tido como texto e que se você multiplicar por 1 ele vira numero e muda de lado etc. Vi tambem essa função somarproduto que eu não conhecia. Enfim, foi uma aula proveitosa. Agora que fui usar meu computador em casa e a sua formula funcionou. Eu tinha feito uma que funcionou também quase igual a sua. seria assim: =SOMARPRODUTO(--(A3:A10="PAULO")*(SUBSTITUIR(C3:C10;(DIREITA(C3:C10;2));"")*1)) Agora tenho que achar um jeito de ver na matriz principal onde vou usar essas formulas, porque a quantidade de texto em cada celula e os algarismos numericos são diferentes. Pode ter de 3 a cinco letras e um ou dois numeros. A proposito, como eu uso o "*" como um curinga para designar uma parte do texto. Eu tentei usar mas sempre deu erro. Agradecimento antecipados.
  17. Olá Pessoal. Estou tentado fazer uma soma condicional, (somase) em uma coluna que contem texto, mas não estou conseguindo. Já usei o substituir, o mudar, o ext.texto para retirar a parte de texto e mesmo assim não resolve. As vezes aceita a fórmula, mas o resultado é zero. Segue screen do excel para visualizar.Existe outra maneira de fazer, isto é, faço uma nova coluna retirando os texto da coluna principal e ai consigo, mas como estou estudando essas fórmulas, quero me aprofundar. Meus agradecimentos antecipados. João Batista. João Batista.
  18. Olá Osvaldo! Obrigado novamente. Vou praticar! Se tiver mais alguma dúvida, primeiro tento achar a resposta, se não, posto aqui. João Batista.
  19. Olá Pessoal!!! Olá Osvaldomp!!! Muito obrigado Osvaldo!! Deu certo com "Fazer Correspondência com a Formatação de Destino". Aprendi mais essa. Pena que eu não posso embutir isso como um comando, pois as pessoas mais leigas provavelmente não saberão fazer isso, assim como eu não sabia. Mas... basta querer aprender que tem o forum aqui para dar suporte. Posso dizer com toda segurança e tranquilidade que esse forum tem se saído um dos melhores que eu já frequentei. Todos os meu posts foram resolvidos. Agradecimento a todos. João Batista.
  20. Ola Pessoal!! Aproveitando a deixa da intervenção de uma coisa em outra, procurei também na net e não achei. É bem provável que vocês saibam o porquê. É o seguinte: Se eu tenho uma célula ou um conjunto de células preenchidas com cor, azul por ex., e eu escrevo nelas e depois uso "limpar conteúdo", só apaga o que eu escrevi. porém, se eu copio algo de outro lugar, uma planilha do banco, e colo, além de apagar as cores que eu preenchi, (isso não seria problema), depois que eu uso "limpar conteúdo" fica a cor da outra planilha. Só consigo restabelecer se ao invés de dar apagar conteúdo, eu der um "back". Tem como evitar isso??? Agradecimentos antecipados.. JoaoBatista.
  21. Obrigado Kleber pela explicação. Eu já desconfiava disso, quando não achei nada na net. Vai ter que ficar do jeito que está então, porque eu fiz essa planilha por duas coisas: A primeira é para eu aprender excel, e olha, tenho aprendido bastante e com a ajuda de vocês, desde ja agradeço. A segunda era exatamente para poder colocar os dados todos bagunçados, inclusive com textos e a planilha ser capaz de retirar so o que interessa e organizar para fazer os cálculos necessários.mas valeu. Aprendi mais uma.Obrigado. Até mais... João Batista
  22. Ola Pessoal!!! Procurei pela net e não achei! Tenho uma planilha com varias colunas. Em uma dessas colunas eu entro com dados. Esses dados não são exatamente do mesmo tamanho. Assim, quando eu copio e colo, muda a altura da celula e muda a altura de toda a linha daquela celula. Tem como impedir isso. Não deixar que a altura de uma célula altere a altura das outras, ou eu tenho que fazer planilhas separadas.Eu posso colocar as colunas que podem ser alteradas dentro de uma pagina de impressão, separada das outras que devem ficar fixar. Agradecimentos antecipados. Joao Batista.
  23. Ola Pessoal!!! Grande Patropi!! Sempre você. Sobre o VBA eu ja tinha uma ideia que seria através dele. Vou dar uma olhada nisso. Se não for muito difícil, acho que dá para aprender. Mas como eu ainda sou eletrônico não sei se vai sobrar tempo. Obrigado pela ajuda. adicionado 30 minutos depois Ola Patropi!!! Ja fiz e deu certinho!!! Ja coloriu o resultado! Falou Amigão! Joao Batista. adicionado 40 minutos depois Essa planilha parece uma coisa simples, Mas não é.. Por ex., esse ponto que ele coloriu significa que o salario somado naquele ponto é o menor salario considerado pelo sistema que calculou. Assim, se ele tiver muito proximo do salario que a pessoa ganha ou perto do teto, a pessoal pode pensar em sua aposentadoria, pois não mudaria muito mais o seu salário beneficio, ficando dependente apenas dos anos trabalhados. Muitos amigos meus sempre me perguntam a respeito disso, mas no site do inss é muito difícil ver isso. Abraço a todos.
  24. Olá pessoal!!! Eu procurei na net e não achei e nem sei se pode. Mas o qe e pretendo é o seguinte: Numa determinada planilha, depois de certo calculos e funções eu tenho como resultado a posição de uma celula. Ou seja , por ex. A20. Esse resultado vai está contido por ex. na celula A2.Então na celula A3 eu coloco funções que vai pegar esse endereço da célula A2, no cao "A20" e fazer a celula A20 mudar de cor para destacar.É como se fosse numa cartela de rifa. Faz se um sorteio randomico e de posse do numero da matriz da rifa, obtém se o nome e deixa o local com cor diferente. Uma outra coisa parecida com isso seria, se eu tivesse uma celula para digitar nomes e quando eu der enter ou clicar para fixar o nome naquela célula, um comando tiraria o nome daquele lugar e colocaria em uma sequencia em outra parte da planilha e deixaria o local onde foi digitado em branco. Isso é possivel ou so com macros?? Agradecimentos antecipados.. Joao Batista

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...