Bom Dia! Estou escrevendo uma macro e gostaria de executa-la ao pressionar F3, porem os testes que fiz nao obtive sucesso
Tenho um formulario e a macro coloquei em um modulo,
Tentei assim
Em esta pasta de trabalho no evento workbook open
Application.OnKey "{F3}", "NPagamento"
NPagamento é a macro que pretendo executar
e no Evento Before Close
Application.OnKey "{F3}", ""
Alguma ideia?
Marcelo Prudencio
"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.
MPrudencio,
Bom Dia!
Não tenho absoluta ceerteza, mas acho que a Microsoft não permite que se use as teclas de função para a execução de macros, pois, como o próprio nome diz, são teclas de função e podem ser utilizadas para outras finalidades. Quando você tenta gravar uma macro, as teclas de atalho permitida já começam com o CTRL antes...
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Eu uso dessa forma para abrir um formulario...., que ao abrir executa uma macro especifica. e da mesma forma
Porem dessa vez nao funcionou...
Marcelo Prudencio
"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.
Consegui fazer funcionar porem so para abrir o formulario.
Sub FVendas()
FrmVendas.Show vbModeless
End Sub
Em Esta Pasta de Trabalho
Workbook open
Application.OnKey "{F3}", "FVendas"
Workbook Before Close
Funcionou...
Application.OnKey "{F3}", ""
Marcelo Prudencio
"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.
Em 2013 tivemos o tópico "Application.Onkey para Userform" - viewtopic.php?f=10&t=9275, com questão parecida, só que era para se executar a partir de controles em formulário.
Cheguei a montar um modelo que coloquei em Bibliotecas, veja se ajuda :
Teclas de Atalho em Formulario - viewtopic.php?f=21&t=9276
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Mauro a ideia é exatamente essa, porem de acordo com o que esta no modulo de classe e ajustando ao que pretendo ficou assim
Private Sub TextBoxEvents_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Select Case KeyCode Case vbKeyF6 RegistraPagamento End Select End Sub
Porem nao funcionou pretendo rodar a macro registrapagamento ao com o atalho da tecla F6
Obrigado por enquanto
Marcelo Prudencio
"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.
Marcelo, pela instrução que colocou, não precisa utilizar o Modulo de Classe citado no tópico que indiquei, la temos o modulo devido a criação em Tempo de Execução, testei aqui, e não tive erro.
Verifique se está fazendo corretamente, ou se tem algum outro código impedindo, e tambem informe se deu algum erro ou simplesmente não fez nada, procure acompanhar passo a passo utilizando "F8".
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Mauro nao acontece absolutamente nada...
Onde devo colar o codigo acima entao.... Pq colei no modulo de classe nem a depuração funcionou...
Colei no modulo e tb nao...
Outra coisa que observei é que no meu arquivo nas caixas de combinação do VBA onde seleciona a que evento o codigo deve rodar (Geral), nao altera em nada com a implantaçao do codigo
Sendo mais especifico a ideia é a seguinte
Estou fazendo um frente de caixa e na hora do pagamento tenho diversas opções de pagamento, e caso o cliente faça um pagamento parcial, exemplo a compra deu 100,00 e o mesmo faz o pagamento de 50,00 em cartao e outros 50,00 em dinheiro preciso registrar o pagamento parcial para finalizar a venda corretamente.
O codigo pra registrar o pagamento esta pronto entao preciso faze-lo funcionar atraves de um atalho.
E usar as teclas de função me pareceu a melhor opção.
O usuario digita o valor pago escolhe a forma de pagamento e executa a macro pra registrar o pagamento.
Essa é a ideia.
Marcelo Prudencio
"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.
Este código não vai em nenhum Módulo, e sim no Evento do Textbox em seu formulário cujo o nome é : TextBoxEvents.
Se o textbox que quer tiver o nome diferente tem de alterar, ou clique duas vezes no textbox e altere a propriedade no lado direito para "KeyUp" e cole as instruções :
Select Case KeyCode Case vbKeyF6 RegistraPagamento End Select
É só isto, alias se não for ter outras teclas associadas ao textbox não precisaria do Case.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Fiz assim
Private Sub TxtValorPago_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Select Case KeyCode Case vbKeyF6 RegistraPagamento End Select End Sub
A text box tem o nome txtValorPago digitei o valor pago e pressionei F6 mas nao executou o codigo.
Marcelo Prudencio
"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.
Marcelo, pela rotina não vejo erro, você deve estar cometendo algum equivoco, fiz um modelinho simples onde a macro "RegistraPagamento" lança o valor do textbox na planilha em A1.
Abra o formulário, digite qualquer valor no textbox e pressione "F6"
Aqui funciona normal, se não funcionar com você pode ser algum outro problema de configuração.
Onkey_Form
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Acho que consegui entender o problema
Ao digitar o valor e confirmar com ENTER outra macro é executada para calcular o troco
E somente depois dessa execução o usuario vai pressionar F6 e isso nao funciona
Ja testei nos eventos Key down e key press, tb sem sucesso.
Marcelo Prudencio
"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.
Marcelo, o evento KeyUp funciona com o foco no controle, uma vez que aperta o enter você sai do controle textbox consequentemente ele não tem mais o foco e a tecla F6 não irá funcionar, mas se tem uma outra rotina que é executada ao teclar enter, não sei qual evento está utilizando, mas você pode utilizar o evento EXIT e apos as rotinas que executa ter uma linha para chamar a macro RegistraPagamento sem precisar de tecla de atalho.
Private Sub TxtValorPago_Exit(ByVal Cancel As MSForms.ReturnBoolean) MsgBox "Agora vamos executar a macro RegistraPagamento - " & vbCrLf & " - Que enviará o Valor para A1" RegistraPagamento End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Mauro segue meu formulario com os codigos envolvidos no problema.
O Evento Exit nao funciona pq ele é utilizado para realizar o calculo de troco se o caso, pelo menos nao consegui fazer funcionar como gostaria.
Marcelo Prudencio
"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.