Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
  • Avatar do usuário
Por Adrian
Posts
#2602
Boa tarde!

Gente em alguns sistemas corporativos, que trabalhei costumava digitar a data de nascimento dos clientes. Hoje continuo fazendo isso só que no Excel a diferença é q no sistema anterior quando começava a digitar a data por exemplo:

25/12/1981 simultaneamente os sistema já inserindo a barra divisória. Tem alguma macro que faça isso?

Grato

Adriano
Avatar do usuário
Por alexandrevba
Avatar
#2604
Boa tarde!!

Considerando que você está usando om controle de UserForm chamado text box.
Código: Selecionar todos
Private Sub txtData_Change()
    'Formata : dd/mm/aa
    If Len(txtData) = 2 Or Len(txtData) = 5 Then
        txtData.Text = txtData.Text & "/"
        SendKeys "{End}", True
    End If
End Sub
Por Adrian
Posts
#2616
Alexandre, esqueci de te falar da célula, quero que funcione na B18. Há mais não está funcionando porque será?

Grato Adriano
Avatar do usuário
Por Vidal
Posts Avatar
#2627
Bom dia, pessoal!

Tente isto:
Imagem

para mim, funcionou... 8-)

Espero ter Ajudado.
Se a mensagem foi util Favor Clicar na mãozinha.
Quando necessário, lembre se de marcar o tópico como [RESOLVIDO].
Tenha um bom dia :D
Avatar do usuário
Por Vidal
Posts Avatar
#2628
Aguarde um pouco antes de fechar o Tópico, pois estou desenvolvendo ainda uma outra maneira de resolver o problema que, creio eu, será ainda mais eficiente que esta que postei acima.. aguarde, por gentileza!
Avatar do usuário
Por Vidal
Posts Avatar
#2630
Bom.. a idéia era usar uma fórmula que desenvolvi dentro da validação de células... ou na formatação condicional... a fórmula funciona, pois, considerando que.. se você digitar na célula G21 310815 ou 31082015 e em qualquer outra célula você inserir a fórmula:
=CONCATENAR(ESQUERDA(G21;2);"/";EXT.TEXTO(G21;3;2);"/";EXT.TEXTO(G21;5;SE(NÚM.CARACT(G21)=8;4;2)))
...você verá que funciona... mas, estou pecando em algum procedimento ao utilizar formatação condicional e/ou validação de células... acho que preciso tomar um pouco de café pra ativar os meus neurônios... :lol:
De qualquer forma.. aquela outra solução que postei antes também funcona... sendo assim:
Espero ter Ajudado.
Se a mensagem foi util Favor Clicar na mãozinha.
Quando necessário, lembre se de marcar o tópico como [RESOLVIDO].
Tenha um bom dia 8-)
Avatar do usuário
Por Vidal
Posts Avatar
#2631
Estou postando a planilha com a fórmula apenas como exemplo


Se a mensagem foi util Favor Clicar na mãozinha.
Quando necessário, lembre se de marcar o tópico como [RESOLVIDO].
Tenha um bom dia 8-)
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por Vidal
Posts Avatar
#2632
A célula em que vc vai digitar (no exemplo é H6) deve estar formatada como 'texto', caso contrário, se vc digitar uma data com '0' zero na frente o '0' zero vai sumir...
Por Adrian
Posts
#2636
Fui abrir o seu anexo e olha só o que aconteceu
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por alexandrevba
Avatar
#2638
Bom dia!!

Se você deseja o efeito na célula, então use o evento Worksheet_Change.

Insira esse código dentro do módulo de guia
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Dim Cell As Range
  If Not Intersect(Target, ActiveSheet.Columns(1)) Is Nothing Then
      For Each Cell In Intersect(Target, ActiveSheet.Columns(1))
          If WorksheetFunction.IsNumber(Cell.Value) Then
              Cell.Value = Format(Cell.Value, "00\/00\/00")
              Cell.NumberFormat = "dd/mm/yyyy"
          End If
      Next Cell
  End If
End Sub
Att
Avatar do usuário
Por Vidal
Posts Avatar
#2639
Ahhh... desculpe.. esqueci de salvar como formato à ser lido pelo Excel.. é que estou utilizandro o LibreOffice.
Envio agora o arquivo como (.xls), ok?!
Você não está autorizado a ver ou baixar esse anexo.
Por Adrian
Posts
#2647
Vidal vou usar a fórmula. Quanto a você Alexandre a macro deu certo como faço para alterar essa macro só para uma célula por exemplo B18,
pq ali só consegui alterar a coluna tem como alterar uma célula?

Muito Grato,

Adriano
Avatar do usuário
Por alexandrevba
Avatar
#2648
Bom dia!!

Não testado...
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Dim Cell As Range
  If Not Intersect(Target, Range("B18")) Is Nothing Then
      For Each Cell In Intersect(Target, Range("B18"))
          If WorksheetFunction.IsNumber(Cell.Value) Then
              Cell.Value = Format(Cell.Value, "00\/00\/00")
              Cell.NumberFormat = "dd/mm/yyyy"
          End If
      Next Cell
  End If
End Sub
Att
Por Adrian
Posts
#2651
Alexandre, digitar a data de nascimento do cliente é uma rotina. A macro funcionou mas observe um detalhe

segue anexo
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por Sandman
Posts Avatar
#2652
boa tarde adrian, caso vc não precise utilizar os dados das datas para calculos e apenas seja para exibição vc pode utilizar o recurso formato personalizado tb, é só utilizar o seguinte código 00\/00\/0000 :mrgreen:
Por Adrian
Posts
#2655
Sandman, Obrigado parceiro deu certo!

Obrigado a todos do fórum

Grato

Adriano
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord