Página 1 de 1

Desativar tecla ESC e CTRL

Enviado: 20 Out 2019 às 07:00
por BritoMarques
Olá a todos!.
Pessoal estou tendo necessidade de desativar a funcionalidade das teclas ESC e CTRL, executar uma macro e reativar no final. Alguém pode me ajudar?

Desativar tecla ESC e CTRL

Enviado: 21 Out 2019 às 05:58
por eduardogrigull
O Ctrl só dá de bloquear "sempre", não somente em um determinado tempo... O Esc podes tentar isso: Application.EnableCancelKey = xlDisabled
Coloque isso no início da macro e no fim coloque com o xlEnabled.

Re: Desativar tecla ESC e CTRL

Enviado: 21 Out 2019 às 17:37
por BritoMarques
Obg pela dica Eduardo vou fazer e ver se dá cert.
Quanto a tecla CTRL meu objetivo na verdade é impedir que o usuário possa abortar a execução da macro e já que a tecla CTRL não pode poderia se inabilitar a tecla BREAK é possível?

Desativar tecla ESC e CTRL

Enviado: 21 Out 2019 às 17:44
por eduardogrigull
Voce pode sim inabilitar, mas ai seria por todo o tempo que sua planilha estiver aberta.
Voce precisa colocar em Esta_pasta_de_trabalho > Workbook_Open()
Para bloquear o Break:
Código: Selecionar todos
Application.OnKey "{BREAK}", ""
Para bloquear o CTRL + Break:
Código: Selecionar todos
Application.OnKey "^{BREAK}", ""

Desativar tecla ESC e CTRL

Enviado: 22 Out 2019 às 07:02
por BritoMarques
Eduardo, sou grato a sua atenção.
Gostaria, se possível, de mais um esclarecimento:
1 - No caso basta inibir a tecla BREAK que a CRTL+BREAK também estaria inativa. Correto?
2- Após fechar a planilha a tecla volta a ter sua funcionalidade normalmente sem precisar de nenhum comando na saída. correto?
Fico no aguardo de sua presteza e agradeço antecipadamente a atenção

Desativar tecla ESC e CTRL

Enviado: 22 Out 2019 às 08:16
por eduardogrigull
1- Não, são comandos diferentes. Bloquear a tecla Break só inibe ela sozinha. Bloquear o Ctrl Break inibe essa combinação de teclas.
2- Só é bloqueado enquanto o Excel estiver aberto, porém, é bloqueado em todas planilhas naquele momento. Após fechar a abrir qualquer outra planilha, não terá efeito, assim como no Windows

Re: Desativar tecla ESC e CTRL

Enviado: 22 Out 2019 às 09:57
por Jimmy
Brito,

Você não precisa inibir o cancelamento, pode apenas tratá-lo.

O xlErrorHandler faz com que qualquer tentativa de interrupção seja tratado como erro, e a macro abaixo desvia qualquer erro para a sub-rotina de tratamento. Se for interrupção (Esc ou Cntr-Break), mostra no Debug.print, e se não for interrupção (erro mesmo) exibe mensagem de erro.

O Loop vai até 8000 apenas para não correr o risco da macro não encerrar mais, ou demorar muito. Aumente ou diminua para seus testes.
Código: Selecionar todos
Sub NaoInterrompe()
    On Error GoTo TrataErro
    Application.EnableCancelKey = xlErrorHandler
    
    For B = 1 To 8000
        a = 55
        Range("A1").Value = a
        Calculate
    Next
    a = 1 / 0 'Erro simulado para ativa a rotina que trata erros
    
    Exit Sub
TrataErro:
    If Err.Number = 18 Then
        Debug.Print "Tentou " & Now()
        Resume
    Else
        MsgBox "Erro " & Err.Number & vbnerline & vbCrLf & _
               "Descrição: " & Err.Description, vbCritical, _
               "ERRO"
        Exit Sub
    End If

End Sub
Atenção para o fato de que, se houver um erro mesmo, será exibida uma mensagem. Se o operador teclar CTRL-Break na tela dessa mensagem, o código para e permite debug. É claro que mensagens assim não devem ocorrer com frequência, porque seriam resultado de um código mal feito, mas sempre é possível. Se não quiser essa possibilidade, arranje outra forma de avisar ao operador que o erro ocorreu.

Se esta mensagem colabora para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan

Desativar tecla ESC e CTRL

Enviado: 23 Out 2019 às 05:42
por BritoMarques
Aguadecido pela dica Jimmy!
vou fazer testes