Ir ao conteúdo
  • Cadastre-se

JOAO BATISTA DEJANO

Membro Pleno
  • Posts

    45
  • Cadastrado em

  • Última visita

  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.

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...