Views

Histats

Vitrine

VBA Excel - Criando Teclas de Atalho.

Inline image 1

Quando criamos códigos VBA necessitamos executá-los e isso pode ser feito de muitos modos: 

  • 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), e
  • Através de teclas de atalho (shortcuts)

A possibilidade de utilizar determinadas teclas para chamar o código que criamos é muito prática e útil. Neste artigo veremos algumas formas e exemplos de como associar teclas de atalho a procedimentos, compreendendo as principais diferenças entre os dois métodos disponíveis.

A maneira mais simples e usada pela maioria dos utilizadores, é selecionando o separador Developer, escolhendo a opção Macros (ou pressionando as teclas Alt+F8)

New Picture

Na janela com as macros disponíveis, selecionamos a macro pretendida e escolhemos a opção Options.

New Picture (2)

Abrirá uma nova janela onde podemos indicar que tecla de atalho iremos associar à macro seleccionada.

New Picture (1)

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, por exemplo, será Ctrl+a 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

Simples e prático.

No entanto isto limita-nos à utilização de determinadas combinações de teclas , e isso em alguns casos, poderá ser 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:

TeclaCó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 Excel é aberto, e definindo ao abrir 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 determinado 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 atente que determinadas combinações, especialmente usando a tecla Alt mais uma letra ou número, não funcionam, pois são usadas como teclas de atalho do próprio MS Excel. É importante testar sempre!

É importante verificar se não estamos a utilizar uma combinação do próprio sistema operacional. Por exemplo, a combinação Ctrl+C ("^c") serve para copiar informação (copy), assim como o Ctrl+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, sempre que pressionarem a tecla Enter aparecerá uma mensagem com a informação "Opps !!!". 

Mas podemos também desabilitar as associações definidas. Para isso 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 problemas que as associações podem causar.

As associações são, sem dúvida, uma forma muito efetiva de se evocar certas funcionalidades.

Reference: Jorge Paulino

Tags: VBA,
keys, teclas, atalho, Excel,


André Luiz Bernardes

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...