Notifications
Clear all

Como fazer que ao teclar ENTER, vá para determinada célula

7 Posts
5 Usuários
0 Reactions
1,814 Visualizações
(@tutano007)
Posts: 3
New Member
Topic starter
 

Boa Noite.
Estou com uma dúvida e gostaria da ajuda dos senhores.
Eu tenho uma tabela com 15 colunas e 50 linhas cada uma das colunas. Eu a utilizo para digitar pesos de embalagens. Começo a digitar na primeira célula da primeira coluna e vou teclando ENTER até chegar na última linha. Quando chego na última linha eu tenho que utilizar o mouse ou as setas do teclado para selecionar a primeira célula da coluna seguinte e assim por diante até completar ou não a tabela.
O meu objetivo é o seguinte: Quando eu apertar enter na última linha, posicionar automaticamente o cursor na primeira célula da próxima coluna.

Eu encontrei o código abaixo:

If Target.Address(False, False) = "A61" Then 'Se a célula A60 for alterada
Range("B10").Select 'Selecionar a célula B10
End If

Dados do exemplo: A60 é o último valor, A61 é onde fica a soma dos valores da coluna e B10 é a primeira célula da segunda coluna.
Funcionou. Porém ele está indo para a célula desejada quando eu clico na célula A61 no caso deste código. Eu gostaria que fosse para a próxima célula somente quando eu estiver digitando na célula A60 e teclar ENTER. Quando eu selecionar a célula do somatório, não acontecesse nada.

Desde já agradeço a atenção e fico no aguardo.

 
Postado : 21/09/2016 10:07 pm
Basole
(@basole)
Posts: 487
Reputable Member
 

Teste ai, e veja se funciona:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Count > 1 Then Exit Sub
    If Target.Address(False, False) = "A60" Then    'Se a célula A60 for alterada
        Range("B10").Select    'Selecionar a célula B10
    End If

End Sub

Click em se a resposta foi util!

 
Postado : 22/09/2016 7:23 am
(@skulden)
Posts: 170
Estimable Member
 

Tutano, bom dia.

Você só precisa alterar o código para a célula desejada.

Seu if está se referindo a célula "A61", então a B10 vai ser selecionada após a alteração da "A61". Se o seu interesse é que isso aconteça após alterações na "A60", basta alterar essa referência para "A60".

Abraços.

Se a resposta lhe foi útil, clique no joinha!

 
Postado : 22/09/2016 7:30 am
engeel2014
(@engeel2014)
Posts: 207
Estimable Member
 

Amigo, não é necessário utilizar macro, basta clicar com botão direiro do mouse nas células que deseja depois clique em "Formatar células" e em "Proteção" desmarque a a opção "Bloqueadas" clique em "OK" pra sair. Depois vá em "Revisão" selecione "Proteger planilha" e dentro da janela que abrir desmarque a opção "selecionar células bloueadas" depois clique em "OK". pronto só fazer o teste.

Lucélio Ferreira dos Santos
Eng. Eletricista
CREA: DF-7165/TD
[email protected]

 
Postado : 22/09/2016 7:49 am
(@mprudencio)
Posts: 2749
Famed Member
 

Isso nao precisa de codigo é so proteger a planilha.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 22/09/2016 8:57 am
(@tutano007)
Posts: 3
New Member
Topic starter
 

Obrigado pela ajuda pessoal.
Eu protegi as células como o engeel2014 disse e vi o teste.rar enviado, porém a planilha não é somente esta tabela. Tem o cabeçalho e rodapé para preencher. Quando eu teclo enter , ele pula a célula bloqueada vai para próxima abaixo que no caso é o rodapé ou antes de ir para a primeira célula da tabela, ele vai para o cabeçalho. Não sei se existe ainda algum modo sem a necessidade de utilizar vba.
Consegui como o Basole passou. Eu vi que o código foi feito no Worksheet_Change e eu estava fazendo no Worksheet_SelectionChange, não sei a diferença, porém deu certo. Obrigado.
Se não for encomodo...
Eu gostaria de abranger esse código do Basole para as células A60 até R60, ou seja: Da célula A60 vai para B10, da célula B60 vai para C10, da célula C60 vai para D10 e assim por diante até a coluna R.
Teria que criar um código para cada célula ou posso modificar este e abranger todas ?

Muito Obrigado.

 
Postado : 22/09/2016 10:41 am
Basole
(@basole)
Posts: 487
Reputable Member
 

@tutano007,
Segue as alterações, veja se é esse o intervalo, que entendi, que vc. deseja:

 Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Count > 1 Then Exit Sub

    If Not Intersect(Target, Range("A10:R60")) Is Nothing Then
              'Se no intervalo (A10:R60) a linha 60 for alterada
        If Target.Address(False, False) = VBA.Replace(ActiveSheet.Cells(60, Target.Column).Address, "$", "") Then
            ActiveSheet.Cells(10, Target.Column + 1).Select   ' Selecionar na linha 10
        End If

    End If
End Sub 

Click em se a resposta foi util!

 
Postado : 22/09/2016 11:16 am