Página 1 de 1

[resolvido] Mensagem temporizada

Enviado: 13 Set 2017, 00:43
por mylton
Boa noite
Tentei seguir sua dica sobre mensagem temporizada, porém não consegui faze-la funcionar.
A ideia é quando clicarmos numa caixa de texto apareça a msg.
Anexo um exemplo.
Obrigado.
Caixa MSG.accdb

Re: Mensagem temporizada

Enviado: 13 Set 2017, 10:26
por Damasceno Jr.
Tente alterar o nome da função

Como tá agora:
Código:
Public Function Mensagem(Seconds As Integer, Prompt As String, _
Optional Buttons As VbMsgBoxStyle = vbOKOnly, _
Optional Title As String) As VbMsgBoxResult
Dim wshell As Object
Set wshell = CreateObject("WScript.Shell")
MsgBoxTimer = wshell.PopUp(Prompt, Seconds, Title, Buttons)
End Function

Como deve ficar:
Código:
Public Function Mensagem2(Seconds As Integer, Prompt As String, _
Optional Buttons As VbMsgBoxStyle = vbOKOnly, _
Optional Title As String) As VbMsgBoxResult
Dim wshell As Object
Set wshell = CreateObject("WScript.Shell")
Mensagem2 = wshell.PopUp(Prompt, Seconds, Title, Buttons)
End Function

Re: Mensagem temporizada

Enviado: 13 Set 2017, 15:15
por mylton
Fiz a correção e apresenta erro devido a espera de variável ou procedimento, não módulo.
Em anexo.
Obrigado

Caixa MSG versão 2.accdb

Re: Mensagem temporizada

Enviado: 13 Set 2017, 23:58
por Damasceno Jr.
Você não fez como eu indiquei. A ideia é que você não pode usar palavras reservadas para nomear funções ou objetos dentro do VBA, e você nomeou a função como "Mensagem" (eu tinha sugerido "Mensagem2", não é o ideal, mas daria certo)...

Refiz o trecho com um nome mais apropriado, confira:

Código:
Public Function MsgBoxTemporizada(Seconds As Integer, Prompt As String, _
Optional Buttons As VbMsgBoxStyle = vbOKOnly, _
Optional Title As String) As VbMsgBoxResult
Dim wshell As Object
Set wshell = CreateObject("WScript.Shell")
MsgBoxTemporizada = wshell.PopUp(Prompt, Seconds, Title, Buttons)
End Function

Para chamar por ela, use:

Código:
MsgBoxTemporizada 2, "Teste com a caixa de mensagem...", vbOKOnly, "Aviso"

Re: Mensagem temporizada

Enviado: 14 Set 2017, 19:15
por mylton
Segui sua dica.
Vide anexo.
Mas...não rolou.

Caixa MSG versão 3.accdb

Re: Mensagem temporizada

Enviado: 14 Set 2017, 23:05
por Damasceno Jr.
rsrs... custei a entender o que estava acontecendo... mas enfim entendi.

O código está funcional, o problema é que você sempre está renomeando o módulo com o mesmo nome da função. Isso faz com que o VBA não saiba exatamente a quem o código se refere.

É necessário adotar um padrão para que não haja confusão na hora de referenciar um objeto ou função.

Sugiro assim:
Inicie o nome de tabelas com "tbl" (ex: tblFornecedores)
Inicie o nome de consultas com "cns" (ex: cnsFornecedoresLocais)
Inicie o nome de formulários com "frm" (ex: frmCadastroFornecedores)
Inicie o nome de macros com "mcr" (ex: mcrGeral)
Inicie o nome de módulos com "mod" (ex: modGeral)
Inicie o nome de classes com "cls" (ex: clsProdutos)
Inicie o nome de funções com "fnc" (ex: fncMsgBoxTemporizada)

No caso em questão o módulo se chamaria "modMsgBoxTemporizada" e a função "fncMsgBoxTemporizada"

Re: Mensagem temporizada

Enviado: 14 Set 2017, 23:15
por Damasceno Jr.
Veja como com o módulo e a função nomeados diferentes funciona redondinho
funcionamento.jpg

Re: Mensagem temporizada

Enviado: 15 Set 2017, 10:39
por Avelino Sampaio
Damasceno,

vc tem talento para ensinar. Te dou os meus parabéns!!!

Re: Mensagem temporizada

Enviado: 15 Set 2017, 15:22
por Damasceno Jr.
Vindo de quem sabe muito sobre o assunto pra quem tá em processo de aprendizagem... fico muito agradecido, professor, de verdade.

Re: Mensagem temporizada

Enviado: 15 Set 2017, 15:23
por Damasceno Jr.
mylton, conseguiu fazer funcionar com as dicas?

Re: Mensagem temporizada

Enviado: 15 Set 2017, 16:21
por mylton
Boa tarde.
Desculpe a demora.
Mas to no plantão um no hospital e não troxe note.
Verei a manhã sem falta. E respondo.
Concordo com Avelino e c vc.
Área de saúde para entender programação...demora um pouco.
Kkk.
Obrigado e gde abs.

Re: Mensagem temporizada

Enviado: 16 Set 2017, 21:55
por mylton
Damasceno.
Funcionou.
Obrigado.
Resolvido.