Dicas de VBA – Criando Teclas de Atalho
Criado por Paulo Silva em 5 de Outubro de 2011 | 7 comentários
Por Jorge Paulino para o Pplware
Estamos de volta com o VBA e algumas demonstrações do seu potencial para resolução de problemas rotineiros do nosso dia a dia de trabalho.
Desta feita vamos ver como criar Teclas de Atalho…

Quando criamos código em VBA necessitamos de o executar e isso pode ser feito de diversas formas:
- Através de Eventos
- Através de funções personalizadas (UDF)
- Através de um objecto que irá chamar o nosso código (quer esteja na worksheet ou na ribbon)
- Através de teclas de atalho (shortcuts)
A possibilidade de utilizar determinadas teclas para chamar o código que criamos é muito prático e muito útil. Neste pequeno artigo iremos ver algumas formas e exemplos de como associar teclas de atalho a procedimentos e ver as principais diferenças entre os dois métodos disponíveis.
A maneira mais simples e mais usada pela maioria dos utilizadores é seleccionando o separador Developer e escolhendo a opção Macros (ou pressionando as teclas Alt+F8)
![]()
Na janela com as macros disponíveis, seleccionamos a macro pretendida e escolhemos a opção Options.
![]()
Irá abrir então uma nova janela onde podemos indicar que tecla de atalho iremos associar à macro seleccionada.
![]()
Neste exemplo, visível na imagem anterior, para chamar a Macro1, a combinação definida é Ctrl+a. Podemos indicar diversas letras (apenas letras) e se indicarmos uma letra em minúscula a combinação associada seráCtrl+a (por exemplo) e se indicarmos a letra em maiúscula a combinação associada será Ctrl+Shift+a.
Alguns exemplos:
a = Ctrl + a
u = Ctrl + u
A = Ctrl + Shift + a
U = Ctrl + Shift + u
Muito simples e muito prático!
No entanto isto limita-nos à utilização de determinadas combinações de teclas o que poderá ser, em alguns casos, um problema. Além disso não permite a atribuição dinâmica e a utilização de teclas especiais. Mas isto pode ser resolvido utilizando VBA!
Para atribuir uma tecla de atalho a uma macro, utilizamos o método Application.OnKey()
Application.OnKey “combinação”, “procedimento a associar”
Exemplo:
Application.OnKey “^a”, “Macro1″
Neste caso é associada a combinação Ctrl+a à Macro1.
Mas vejamos a tabela de códigos de teclas especiais, que além das letras e números podem ser utilizados:
Tecla
Código
BACKSPACE
{BACKSPACE} ou {BS}
BREAK
{BREAK}
CAPS LOCK
{CAPSLOCK}
CLEAR
{CLEAR}
DELETE ou DEL
{DELETE} ou {DEL}
DOWN ARROW
{DOWN}
END
{END}
ENTER (teclado numérico)
{ENTER}
ENTER
~ (tilde)
ESC
{ESCAPE} ou {ESC}
HELP
{HELP}
HOME
{HOME}
INS
{INSERT}
LEFT ARROW
{LEFT}
NUM LOCK
{NUMLOCK}
PAGE DOWN
{PGDN}
PAGE UP
{PGUP}
RETURN
{RETURN}
RIGHT ARROW
{RIGHT}
SCROLL LOCK
{SCROLLLOCK}
TAB
{TAB}
UP ARROW
{UP}
F1 a F15
{F1} até {F15}
E as teclas que são usadas para combinar:
Tecla
Código
SHIFT
+ (adicção)
CTRL
^ (acento circunflexo)
ALT
% (percentagem)
Assim, com a lista de códigos, podemos combinar e associar conjuntos de teclas a macros que tenhamos criado/gravado. Podemos utilizar o evento Workbook_Open(), que é executado quando o ficheiro de Excel é aberto, e definir no arranque as associações que queremos. Por exemplo:
Private Sub Workbook_Open()
Application.OnKey “+^{UP}”, “MostraResultado”
Application.OnKey “%{INSERT}”, “CopiaDados”
End Sub
Neste caso, a combinação Shift+Ctrl+Seta Cima chama o procedimento MostraResultado e a combinação Alt+Insert chama o procedimento CopiaDados.
No entanto estas atribuições funcionam se os procedimentos estiverem definidos num módulo, pois se estiverem definidos no Workbook ou em determinada Worksheet não irá funcionar. Nestes casos é necessário definir o caminho para eles, como é possível ver no exemplo seguinte:
Private Sub Workbook_Open()
Application.OnKey “+^{UP}”, “ThisWorkbook.MostraResultado”
Application.OnKey “%{INSERT}”, “Sheet1.CopiaDados”
End Sub
Aqui estamos a indicar que o procedimento MostraResultado está criado em ThisWorkbook e o procedimento CopiaDados está criado no código da Sheet1.
Mas atenção que determinadas combinações, especialmente usando a tecla Alt mais uma letra ou número, não funcionam, pois são usados como teclas de atalho do próprio Excel. É importante testar sempre.
Muito importante também verificar se não estamos a utilizar uma combinação do próprio sistema operativo. Por exemplo, a combinação Ctrl+C (“^c”) serve para copiar informação(copy), assim como oCtrl+V (“^v”) serve para colar informação (paste). Se atribuirmos estas combinações a diferentes procedimentos, é sobreposto o funcionamento normal (neste caso o copy/paste) e passará a chamar os procedimentos que definimos. Isto pode ser desagradável para muitos utilizadores.
Um exemplo muito simples para que testem rapidamente e entendam o problema de algumas associações. Coloquem o seguinte código num módulo e executem o procedimento AssociaTeclas.
Sub AssociaTeclas()
Application.OnKey “~”, “Opps”
End Sub
Sub Opps()
MsgBox “Opps !!!”
End Sub
Agora, no Excel, sempre que carregarem na tecla Enter aparecerá uma mensagem com a informação “Opps !!!”.
Mas podemos também desabilitar as associações que definidas. Para tal, basta não definir o segundo argumento do método OnKey() que é opcional.
Sub DesabilitaTeclas()
Application.OnKey “~”
Application.OnKey “^v”
Application.OnKey “^v”
Application.OnKey “%{INSERT}”
Application.OnKey “+^{UP}”
End Sub
Após executar o procedimento DesabilitaTeclas as associações definidas deixariam de funcionar e, neste caso, o Enter voltaria a funcionar como antes, assim como o Ctrl+c e o Ctrl+v.
Neste pequeno artigo vimos como é simples atribuir teclas de atalho para chamar procedimentos, utilizando as opções já disponíveis e através de código, e alguns dos problemas que as associações podem causar.
É sem dúvida uma forma muito prática de chamar código VBA.
Autor: Jorge Paulino
Página Pessoal: http://www.jorgepaulino.com/