Ir ao conteúdo

Posts recomendados

Postado

Olá, boa tde!

Encontrei o codigo abaixo pra executar F2+Enter em toda a coluna...

Minha necessidade é pra que ele execute somente na coluna "L" e na célula em que eu alterar ou seja, somente na celula ativa.

Alguém pode me ajudar nesse código...?

 

'Criando função para automatizar F2+Enter no Excel via VBA

Sub atualizaCelula()

lin = 2
col = 2
Do While Cells(lin, col).Value <> ""
Cells(lin, col).Select
ulinha = Selection.End(xlDown).Row
For lin = 2 To ulinha
Cells(lin, col).Value = Cells(lin, col).Value * 1
Next lin
col = col + 1
lin = 2
Loop

End Sub

Postado

@jcgmcs veja se é isso que deseja:

 

Private Sub Worksheet_Change(ByVal Target As Range)

 If Target.Count > 1 Then Exit Sub

    If Not Application.Intersect(Target, Range("L2:L500")) _
       Is Nothing Then
       Target.Value = Target.Value * 1
    End If

End Sub

 

Postado

Basole bom dia amigo!

obrigado pela resposta mas ainda não funcionando..

O caso é o seguinte, nessa coluna "L" a partir da linha 5, sempre que insiro uma data como "dd/mm/aa" são invertidas o "dd e mm" e toda vez, preciso teclar o F2+Enter tndeu...

Seu código após dar "Enter" fica uns 10 segundos calculando e não corrige a data.

Por favor, se puder dar uma revisada ae agradeço muito porque já to biruta com isso, de tantas tentativas q já fiz aqui.. rsrs valeu!!

Postado

Patropi bom dia amigo!

Não entendi seu código... pode explicar...

o que é esse... FormulaR1C1  ?? R1C1...?

Ele irá atuar somente na coluna "L" ?

Postado
13 horas atrás, jcgmcs disse:

O caso é o seguinte, nessa coluna "L" a partir da linha 5, sempre que insiro uma data como "dd/mm/aa" são invertidas o "dd e mm" e toda vez, preciso teclar o F2+Enter tndeu...

Seu código após dar "Enter" fica uns 10 segundos calculando e não corrige a data.

@jcgmcs na sua primeira postagem voce emitiu essas informações acima.

 

Quanto mais dados e informações emitir facilita na pronta ajuda e a solução das suas questões.

 

Segue as alterações, aproveitando a dica do colega Patropi

 

Private Sub Worksheet_Change(ByVal Target As Range)

 If Target.Count > 1 Then Exit Sub
 
    If Not Application.Intersect(Target, _
           Range("L5:L" & Cells(Rows.Count, 12).End(xlUp).Row)) _
       Is Nothing Then
       Target.Value = Target.FormulaR1C1
    End If

End Sub

               

 

Postado

Basole boa tde amigo...

Coloquei o código no início da Plan1 (Clientes) e deu este o erro...
Erro em tempo de execução '28'
Espaço insuficiente para pilha

 

Ficou amarelo nessas linhas:

If Not Application.Intersect(Target, _
           Range("L5:L" & Cells(Rows.Count, 12).End(xlUp).Row)) _
       Is Nothing Then

Postado
Em 14/07/2021 às 05:43, jcgmcs disse:

O caso é o seguinte, nessa coluna "L" a partir da linha 5, sempre que insiro uma data como "dd/mm/aa" são invertidas o "dd e mm" e toda vez, preciso teclar o F2+Enter tndeu...

A inserção é manual ou via macro? Isso só acontece a partir da linha 5 e nas células anteriores a data fica correta? Acho que devia tentar entender porque isso acontece, para evitar e não ter que corrigir depois. Talvez seja questão de formatação.

Postado

Midori,

A inserção é manual e anterior a linha 5 não vae informações e tbém não é formatação pois já tentei de todo aqui. Porisso to apelando por VBA pra forçar a inversão...

Uma obs... há colunas em q as datas digitadas ficam corretas e em outras colunas como a "L" não.. mesmo fazendo a formatação dentro dos conformes..

Postado

@jcgmcs Talvez seja algo com o arquivo ou essa aba, acho que devia tentar uma planilha em branco ou testar outra aba para ver se resolve.

 

Sobre o erro que você comentou acima de "Espaço insuficiente para pilha", desative os eventos antes do Target.Value e ative depois assim,

 

Application.EnableEvents = False
Target.Value = Target.FormulaR1C1
Application.EnableEvents = True

 

 

Postado

Midori beleza!

Então, erro foi eliminado mas parece q isso impede a execução do código porque nada acontece, a data não é corrigida (Invertida) tdeu...

Postado

@jcgmcs O comando não impede a execução, só o erro. Só vai impedir a execução de eventos se EnableEvents ficar como False e não voltar para True.

 

Veja se assim resolve,

 

If InStr(Target, "/") = 3 Then
    Dim D As Variant: D = Split(Target, "/")
    Application.EnableEvents = False
    Target.Value = D(1) & "/" & D(0) & "/" & D(2)
    Application.EnableEvents = True
End If

 

Se não der certo anexe o arquivo.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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