Notifications
Clear all

Código para executar teclas de atalho

12 Posts
5 Usuários
0 Reactions
2,440 Visualizações
OrlandoS
(@orlandos)
Posts: 104
Estimable Member
Topic starter
 

Olá, Pessoal!
Já pesquisei, digitando "allintitle: atalho", no motor de busca do Google no Planilhando e não obtive êxito.

Estou tentando um código em VBA que execute qualquer teclas de atalho inseridas nele.
Exemplo: Se eu digitar dentro do código as teclas de atalho "Ctrl+L", após executá-lo, ele abre a
caixa de diálogo "Localizar e substituir" (da Guia Página Inicial -> Edição -> Localizar e Selecionar -> Localizar...).

Grato pela atenção!
Orlando Souza
[]s

:geek:

PS: Se a resposta foi útil, clique na "mãozinha positiva" ou em "curtir" na fonte de link informada, agradecendo ao colaborador do código/fórmula. Eu já fiz a minha parte! :]

 
Postado : 02/04/2016 8:55 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Juro que nao entendi.

Pq uma macro para algo nativo do excel???

Explica melhor o que pretende talvez apareça uma solução melhor.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 03/04/2016 6:58 am
(@messiasmbm)
Posts: 223
Estimable Member
 

Eu até tenho mas ta em um hd com muitos arqivos no começo quando comecei não sabia bem o que estava fazendo por isto só salvei em txt parte da macro...

    If KeyCode = 112 Then mnuAjuda 'F1
    If KeyCode = 113 Then mnuContasBancarias 'F2
    If KeyCode = 114 Then mnuCentroDeCustos 'F3
    If KeyCode = 115 Then mnuContasPagar 'F4
    If KeyCode = 116 Then mnuContasReceber 'F5
    If KeyCode = 117 Then mnuPagamento 'F6
    If KeyCode = 118 Then mnuRecebimento 'F7
    If KeyCode = 119 Then mnuLançamentos 'F8
    If KeyCode = 120 Then mnuExtrato 'F9
    If KeyCode = 121 Then mnuCalc 'F10
    If KeyCode = 122 Then frmLogin.Show  'F11
    If KeyCode = 27 Then EncerrarSistema 'Esc
 
Postado : 03/04/2016 9:11 am
OrlandoS
(@orlandos)
Posts: 104
Estimable Member
Topic starter
 

(...)
Explica melhor o que pretende talvez apareça uma solução melhor

Eu até tenho mas (...) parte da macro...

Eu possuo uma tabela com diversas colunas e mais de 2000 linhas, dentro de uma plan no Excel.
Nas linhas de uma das colunas, escrevo os CEPs das residências.
Associei à essa coluna um botão para executar uma rotina no editor do Visual Basic,
classificando os CEPs por ordem...

Eu pretendo acrescentar no final daquela rotina um código para abrir a caixa de diálogo "Localizar e substituir",
assim que ela for executada.

messiasmbm, suas sugestões não abriram a caixa de diálogo "Localizar e substituir".

PS: Se a resposta foi útil, clique na "mãozinha positiva" ou em "curtir" na fonte de link informada, agradecendo ao colaborador do código/fórmula. Eu já fiz a minha parte! :]

 
Postado : 04/04/2016 12:33 pm
(@startec)
Posts: 2
New Member
 

A rotina abaixo localiza e substitui se enconntrado:

Sub Cltr_L()
Dim oqVcQuerEncontar As String
Dim oqVcQuerSubstituir As String

oqVcQuerEncontar = ActiveSheet.Range("A1")
oqVcQuerSubstituir = ActiveSheet.Range("A2")

 ' localiza e seleciona a cell
    Cells.Find(What:=oqVcQuerEncontar, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
  ' subst.  a cell ativa
           ActiveCell.Replace What:=oqVcQuerEncontar, Replacement:=oqVcQuerSubstituir, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
 
End Sub
 
Postado : 04/04/2016 1:05 pm
Trindade
(@trindade)
Posts: 278
Reputable Member
 

Boa tarde,.

Não sei se entendi bem, mas você quer chamar a uma função nativa do Excel (Substituir e/ou Localizar).
Creio que você possa utilizar esses atalhos:

Sub Localizar()
    Application.ScreenUpdating = False
        Application.SendKeys ("%CFSL")
    Application.ScreenUpdating = True
End Sub

Sub Substituir()
    Application.ScreenUpdating = False
        Application.SendKeys ("%CFSS")
    Application.ScreenUpdating = True
End Sub

Estava olhando na internet a sequência de letras ("%CFSS") vai variar conforme a versão do Excel, basta clicar no alt que ira aparecer as opções de letra para chegar no atalho deseja, conforme sua versão só realizar a troca das letras.

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 04/04/2016 2:08 pm
OrlandoS
(@orlandos)
Posts: 104
Estimable Member
Topic starter
 

A rotina (...) localiza e substitui (...):
(...)

Eu queria um código só para executar as teclas de atalho Ctrl+L, abrindo a caixa de diálogo "Localizar e substituir".

:roll:

(...) você quer chamar a uma função nativa do Excel (Substituir e/ou Localizar).
Creio que você possa utilizar (...):

Sub Localizar()
Application.ScreenUpdating = False
Application.SendKeys ("%CFSL")
Application.ScreenUpdating = True
End Sub

(...) a sequência de letras ("%CFSS") vai variar conforme a versão do Excel, (...) clicar no alt (...) opções de letra (...) atalho deseja, (...) troca das letras.

Realmente, estaria perfeito se não fosse a sequência para a troca daquelas letras, conforme a versão do Excel.
Mas, pretendo repassar a minha Tabela na plan do Excel para centenas de pessoas. Não sendo possível eu realizar
aquele procedimento em outras versões do Excel que elas possuam.

Olhando também na internet, achei o código:

Application.Dialogs(xlDialogFormulaFind).Show

Porém, ele só abre a caixa de diálogo "Localizar" e trava a planilha enquanto está ativo.
Além disso, não tem todos os recursos existentes na função nativa do Excel "Substituir e localizar".

Encontrei também uma variedade de comandos para usar nesse código, conforme o link:
https://msdn.microsoft.com/pt-br/librar ... 94519.aspx

Contudo, não localizei o comando que abre a caixa de diálogo "Substituir e localizar"...

:cry:

PS: Se a resposta foi útil, clique na "mãozinha positiva" ou em "curtir" na fonte de link informada, agradecendo ao colaborador do código/fórmula. Eu já fiz a minha parte! :]

 
Postado : 05/04/2016 8:52 am
(@mprudencio)
Posts: 2749
Famed Member
 

Tente essa

Application.Dialogs(xlDialogFormulaReplace).Show

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 05/04/2016 11:48 am
Trindade
(@trindade)
Posts: 278
Reputable Member
 

Boa noite, OrlandoS.

Se a dica do MPrudencio não der certo uma outra solução seria ...
Quanto as teclas a serem pressionadas conforme versão, o que pode ser feito é um if para verificar a versão e definir as teclas.
Para verificar versão eu vi algo do gênero no Tomás Vásquez http://www.tomasvasquez.com.br/forum/viewtopic.php?f=20&t=4257

Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.

 
Postado : 05/04/2016 8:16 pm
OrlandoS
(@orlandos)
Posts: 104
Estimable Member
Topic starter
 

Tente essa
Application.Dialogs(xlDialogFormulaReplace).Show

É... também trava a planilha. E não executa o comando se ela estiver protegida.

(...) Quanto as teclas (...), o que pode ser feito é um if para verificar a versão (...)
(...) vi algo do gênero no Tomás Vásquez http://www.tomasvasquez.com.br/forum/viewtopic.php?f=20&t=4257

Tentei a dica sugerida nesse link. Mas não verificou a versão do Excel nem definiu as teclas, conforme código abaixo:

#If VBA7 Then 'Declaração de API´s para versões do MS Office 2010+.
    
    #If Win64 Then 'Declaração para as versões 64 bits.
            
        Application.ScreenUpdating = False
        Application.SendKeys ("%CFSL")
        Application.ScreenUpdating = True
            
    #Else 'Declaração para as versões 32 bits.
        
        Application.ScreenUpdating = False
        Application.SendKeys ("%CFSL")
        Application.ScreenUpdating = True
        
    #End If
    
#ElseIf VBA6 Then 'Declaração de API´s para versões do MS Office 2007-.
    
        Application.ScreenUpdating = False
        Application.SendKeys ("%CFSL")
        Application.ScreenUpdating = True

    #End If

PS: Se a resposta foi útil, clique na "mãozinha positiva" ou em "curtir" na fonte de link informada, agradecendo ao colaborador do código/fórmula. Eu já fiz a minha parte! :]

 
Postado : 06/04/2016 12:18 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Cara agora nao entendi... vc disse que queria a exibição da caixa de dialogo localizar e substituir.

E obvio que ao exibir a mesma o usuario precisa interagir, ou seja precisa digitar algo para ser localizado e substituido...

E é obvio que isso vai parar a execução da macro/planilha nao importa ate que o usuario interaja.

Ao exibir a janela o excel vai esperar vc responder o que quer fazer.

Vamos fazer o seguinte:

Disponibilize um arquivo como modelo de sua planilha com a explicação EXATA do que vc esta querendo fazer.

O arquivo tem que ser o mesmo os dados apenas exemplos.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 06/04/2016 12:28 pm
OrlandoS
(@orlandos)
Posts: 104
Estimable Member
Topic starter
 

(...) vc disse que queria a exibição da caixa de dialogo localizar e substituir.
(...) o usuario precisa interagir (...)
(...) a execução da macro/planilha nao importa ate que o usuario interaja.
Disponibilize um arquivo como modelo (...)

Isso mesmo. Uma macro para algo nativo do excel, a fim de poder interagir com a
planilha, sem a necessidade de ficar a toda hora fechando e abrindo a caixa de
diálogo "Localizar e substituir", quando estiver trabalhando em conjunto com
as demais colunas da tabela.

Deixei de postar aqui um arquivo de exemplo, porque não tive dúvidas quanto à
aplicação ou o funcionamento dos códigos sugeridos neste tópico.

Como não apareceram mais sugestões, vou considerar o tópico resolvido com a
sugestão de Trindade (Seg Abr 04, 2016 4:05 pm), haja vista que foi aquela
que mais se aproximou de seu objetivo. Se o código sugerido não funciona em todas
as versões do Excel, também não causa qualquer problema quanto à sequência das letras.

Obrigado a todos!
Orlando Souza

8-)

PS: Se a resposta foi útil, clique na "mãozinha positiva" ou em "curtir" na fonte de link informada, agradecendo ao colaborador do código/fórmula. Eu já fiz a minha parte! :]

 
Postado : 07/04/2016 8:02 pm