Marco, é possível sim. Mas infelizmente vc precisará fazer todas as combinações.
Para desabilitar uma tecla de atalho com Control, o Ctrl+A:
application.OnKey "^A", ""
Para reabilitar a tecla de atalho com Control, o Ctrl+Al:
application.OnKey "^A"
Em ambos os casos, o circunflexo refere-se ao Control.
Para desabilitar e dps reabilitar todas as teclas, sugiro um loop.
Desabilitar as teclas:
Public Sub DESABILITAR_CONTROL_TECLAS()
Dim Teclas As Variant
Dim i As Long
Teclas = Array("a", "b", "c", 1, 2, 3)
With Application
For i = LBound(Teclas, 1) To UBound(Teclas, 1) Step 1
.OnKey "^" & Teclas(i), ""
Next i
End With
End Sub
Reabilitar as teclas:
Public Sub REABILITAR_CONTROL_TECLAS()
Dim Teclas As Variant
Dim i As Long
Teclas = Array("a", "b", "c", 1, 2, 3)
With Application
For i = LBound(Teclas, 1) To UBound(Teclas, 1) Step 1
.OnKey "^" & Teclas(i)
Next i
End With
End Sub
Use com atenção. Não esqueça de reabilitar tudo no final. Pense que se der um pau na macro, vc precisa ter tratamentos de erro, para poder GARANTIR que mesmo após a execução ou fechamento do arquivo, as teclas voltem a funcionar.
Se o cara usar Ctrl+Tab para ir em outro arquivo, o Ctrl+TAB não está desabilitado, ele não poderá colocar uma celula em negrito, por exemplo... vc tem certeza que é isso que vc quer? Pense bem.
No Help do método OnKey do VBA tem m tutorial e o jeito de fazer com as outras teclas que não são numéricas ou texto !
Estou colando aqui pra facilitar sua vida:
Referência do Desenvolvedor do Excel
Application.Método OnKey
Executa um procedimento especificado quando uma determinada tecla ou combinação de teclas é pressionada.
Sintaxe
expressão.OnKey(Key, Procedure)
expressão Uma variável que representa um objeto Application.
Parâmetros
Nome Obrigatório/Opcional Tipo de dados Descrição
Tecla Obrigatório Sequência Uma sequência de caracteres indicando a tecla a ser pressionada.
Procedure Opcional Variant Uma cadeia de caracteres indicando o nome do procedimento a ser executado. Se Procedure for "" (texto vazio), nada acontecerá quando Key for pressionada. Essa forma de OnKey altera o resultado normal dos pressionamentos de teclas no Microsoft Excel. Se Procedure for omitido, Key reverterá seu resultado normal no Microsoft Excel, e quaisquer atribuições de teclas especiais feitas com métodos OnKey anteriores serão limpas.
Comentários
O argumento Key pode especificar qualquer tecla combinada com ALT, CTRL ou SHIFT, ou qualquer combinação dessas teclas. Cada tecla é representada por um ou mais caracteres, tais como "a" para o caractere a, ou "{ENTER}" para a tecla ENTER.
Para especificar caracteres que não são exibidos quando você pressiona a tecla correspondente (ENTER ou TAB, por exemplo), use os códigos listados na tabela seguinte. Cada código da tabela representa uma tecla no teclado.
Tecla Código
BACKSPACE {BACKSPACE} ou {BS}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
CLEAR {CLEAR}
DELETE ou DEL {DELETE} ou {DEL}
SETA PARA BAIXO {DOWN}
END {END}
ENTER (teclado numérico) {ENTER}
ENTER ~ (til)
ESC {ESCAPE} ou {ESC}
HELP {HELP}
HOME {HOME}
INS {INSERT}
SETA PARA A ESQUERDA {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
RETURN {RETURN}
SETA PARA A DIREITA {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
SETA PARA CIMA {UP}
F1 a F15 {F1} a {F15}
Você também pode especificar teclas combinadas com SHIFT e/ou CTRL e/ou ALT. Para especificar uma tecla combinada com uma outra tecla ou teclas, use a tabela seguinte.
Para combinar teclas com Preceda o código da tecla com
SHIFT + (sinal de mais)
CTRL ^ (circunflexo)
ALT % (sinal de porcentagem)
Para atribuir um procedimento a um dos caracteres especiais (+, ^, % e assim por diante), coloque o caractere entre chaves. Para obter detalhes, consulte o exemplo.
Exemplo
Este exemplo atribui "InsertProc" à sequência de teclas CTRL+SINAL DE ADIÇÃO e atribui "SpecialPrintProc" à sequência de teclas SHIFT+CTRL+SETA À DIREITA.
Visual Basic for Applications
Application.OnKey "^{+}", "InsertProc"
Application.OnKey "+^{RIGHT}", "SpecialPrintProc"
Este exemplo retorna SHIFT+CTRL+SETA À DIREITA ao seu significa normal.
Visual Basic for Applications
Application.OnKey "+^{RIGHT}"
Este exemplo desativa a sequência de teclas SHIFT+CTRL+SETA À DIREITA.
Visual Basic for Applications
Application.OnKey "+^{RIGHT}", ""
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 26/04/2017 4:07 pm