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.
😕 Poxa, o que podemos melhorar?
😃 Boa, seu feedback foi enviado!
✋ Você já nos enviou um feedback para este texto.