fechar

Aprender Excel

APRENDER EXCEL

DICAS E NOVIDADES SOBRE EXCEL

Como fazer o Excel alternar entre células pré-determinadas automaticamente

por: Maximiliano Meyer em VBA, no dia 23/06 | 10:01 atualizado em 17/08 | 08:10

Hoje vamos aprender um recurso muito bacana. Com ele nossa planilha 'informará' aonde o usuário colocará o próximo dado. Funciona assim: Digamos que seu formulário contenha as células A5, B8 e E9, após ele inserir o valor em A5 e confirmar, o cursor irá automaticamente para a próxima célula editável, no caso, B8.

Vamos colocar na prática este cenário. Veja o exemplo abaixo:

Veja que nosso utilizador da planilha poderá alterar as células C6 (Código), C8 (Unidades), F6 (Filial), F8 (Preço). Repare que F10 (Preço) não será mexida, é automática. O código utilizado será:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo z
Application.EnableEvents = False If Not Intersect(Target, Range("célula onde o usuário irá inserir o valor")) Is Nothing Then
[próxima célula onde o Excel irá automaticamente].Activate
End If Continue:
Application.EnableEvents = True
Exit Sub
z:
MsgBox Err.Description
Resume Continue
End Sub

 Uma dica sempre válida é copiar o código e não colá-lo, senão poderá dar algum problema. Na prática colocaremos essa parte

If Not Intersect(Target, Range("célula onde o usuário irá inserir o valor")) Is Nothing Then
[próxima célula onde o Execl irá automaticamente].Activate

Quantas vezes forem necessárias. No nosso caso são 3 vezes. Ok, já temos o código, mas e o que fazer com ele? Se você não sabe como criar uma macro, temos um super post sobre o assunto, confira. Continuando:

Nosso código inteiro ficará:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo z
Application.EnableEvents = False If Not Intersect(Target, Range("C6")) Is Nothing Then
[C8].Activate
ElseIf Not Intersect(Target, Range("C8")) Is Nothing Then
[F6].Activate
ElseIf Not Intersect(Target, Range("F6")) Is Nothing Then
[F8].Activate
End If Continue:
Application.EnableEvents = True
Exit Sub
z:
MsgBox Err.Description
Resume Continue
End Sub

Agora veja que pode ser muito interessante se você mesclar essa macro que aprendemos hoje com um bloqueio de células, por exemplo, onde o usuário não consegue clicar onde você não permitir. Enfim, as aplicações são inúmeras.

Para finalizar, confira um gif de como ficou, na prática, nosso exemplo. A cada vez que colocamos um valor e teclamos "enter", a célula selecionada é alternada automaticamente para aquelas que definimos, e mais, seguindo a ordem pré-estabelecida.

Bacana, certo? Se ficaram dúvidas, comente e logo sanaremos essa dúvida. Até a próxima.