Desabilitar CTRL – ...
 
Notifications
Clear all

Desabilitar CTRL – isso é possível?

4 Posts
2 Usuários
0 Reactions
2,407 Visualizações
(@marco-acv)
Posts: 0
New Member
Topic starter
 

prezados, boa tarde!

por favor, alguém sabe como faço para desabilitar a função ctrl de uma planilha?
exemplo: ctrl+ a, ctrl+b, ctrl+ c............. (desabilitar todas as possíveis combinações que existem).
alguém sabe se é possível desabilitar essa tecla?

observação: eu criei um tópico no site: www.hardware.com.br, com o mesmo título.

desde já agradeço pela atenção de todos.

muito obrigado!

atenciosamente,
marco

 
Postado : 26/04/2017 2:45 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Marco

Não é visto com bom senso a pessoa que posta a mesma dúvida em mais de um fórum ao mesmo tempo, aguarde pelo menos 12 horas antes de postar em outros fóruns.
Evitamos perder tempo em responder, pois você poderá já ter recebido ajuda em outro fórum.

Aproveito para pedir para você não usar a ferramenta Citar, use o botão responder que fica logo abaixo da janela de resposta.
Só use Citar quando realmente for necessário, pois senão, polui o fórum desnecessariamente.
Tenho editado teus tópicos e retirado as citações, mas pelo jeito você não lê o motivo das edições feitas por mim.

Patropi - Moderador

 
Postado : 26/04/2017 2:52 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

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}", ""

 
Postado : 26/04/2017 4:07 pm
(@marco-acv)
Posts: 0
New Member
Topic starter
 

Olá, bom dia Fernando, tudo bem com você?

Sim, é isso mesmo que eu quero (Desabilitar todas as combinações possíveis) vou usar isso para fazer uma planilha sem funções "poder ler, mexer" mas sem usar combinações.

Muito obrigado pela atenção, eu vou fazer um teste na minha planilha.

Obrigado!

Atenciosamente,
Marco

 
Postado : 27/04/2017 5:49 am