Como identificar, pelo VBA, se um objeto está aberto ?
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Muitas vezes é necessário identificar se um objeto (formulário, relatório, consulta ou tabela) está aberto, para uma tomada de decisão, dentro de um procedimento.
Vamos supor que precisamos passar um valor para o campo de um determinado formulário. O valor seria passado assim:
forms!frmContatos!DataDeNascimento = "15/05/1975"
Se o VBA não encontrar o formulário frmContatos aberto, receberemos a seguinte mensagem:
Podemos optar em alterar o código para tratar o erro 2450 ou alterar o código para fazer uma verificação prévia, se o formulário se encontra aberto.
O comando utilizado para saber se o formulário se encontra aberto, é este em vermelho:
Faça o login aqui para ter acesso ao código.
Os comandos abaixo são para verificar relatório e macro abertos, respectivamente:
Faça o login aqui para ter acesso ao código.
Até bem pouco tempo, achava que não existia uma propriedade específica para identificar tabelas e consultas abertas, até que descobri que estava na CurrentData.
Faça o login aqui para ter acesso ao código.
Sucesso!
Os dez artigos mais visitados
MontaRibbons v.7.0 - Assistente completo para criar ribbons no Access
Vídeo - Controle personalizado de Acesso de Usuários
Vídeo - Aprenda sobre filtragens
Vídeo - Segurança máxima, usando o OPEN
Uma ajuda para quem está começando um negócio ou um projeto
Integrando o Access com Servidor MySQL - Introdução
Desabilitando a faixa(ribbon) superior do Access
Vídeo - Programação de relatórios - Parte 1
Como carregar o seu menu sem que ele vá para lista de suplementos
Adquira o kit UsandoAccess e aprenda em alta velocidade
18 comentário(s) James Resplandes 25/09/2023 15:10:38 Top!!! Muito legal mesmo, ótima dica Avelino. Luciano 08/12/2022 16:47:59 Como fazer para verificar se o SUB-formulário está aberto? Formiga10x 17/07/2022 20:16:18 Muito bom mestre foi de muita ajuda. Muito obrigado. Fabio Bulhoes 24/05/2022 22:25:15 Avelino, boa noite Como podemos saber se um Recordset está aberto? Obrigado Avelino Sampaio 15/08/2021 14:49:19 Regis, Copie a função abaixo para um módulo global: Public Function fncTabelaExiste(strNomeTabela As String) As Boolean fncTabelaExiste = IIf(DCount("name", "MsysObjects", "(type = 1 or type =2) AND name='" & strNomeTabela & "'") = 1, True, False) End Function Basta aplicar a função If fncTabelaExiste("NomeDatabela") then 'sim existe else 'não existe end if Sucesso! Regis da Silva 15/08/2021 14:06:53 Estava procurando por todo canto mas... Como eu faço para verificar se uma tabela já existe? Aurino Andrade 24/07/2021 13:41:36 Mestre Avelino, Obrigado pela atenção, sua resposta foi precisa e resolve minha necessidade. Grato pela ajuda. Obrig@do! Avelino Sampaio 24/07/2021 06:38:19 Arino, Especifique melhor sobre este "numero". Usar o nome do controle não serve? Por exemplo: screen.ActiveControl.Name Você pode criar uma numeração propria para os controles, usando a propriedade MARCA. Depois é só utilizar o comando screen.ActiveControl.Tag Sucesso! Arino Andrade 23/07/2021 12:26:39 Boa tarde! Estas instruções são muito úteis. Preciso saber em qual controle eu cliquei (seja um botão, campo, legenda e etc.) tem como saber o número do controle em que cliquei? Obrigado! Hephraim BF 26/04/2021 09:25:53 Muito bom! jonathan 18/04/2021 21:37:21 Boa noite! Parabéns, ótima solução. Usuario 09/02/2021 12:42:50 Função: colocar no modulo e chamar no formulário Function CHECA_FORM(FORMULARIO As String) As Boolean Select Case CurrentProject.AllForms(FORMULARIO).IsLoaded Case True CHECA_FORM = True Case False CHECA_FORM = False End Select End Function No formulário: IF checa_form("nomedoformulario) = true then me.campo1 = "xx" end if Paulo Vinicius 08/02/2021 20:58:53 Mais uma vez superando expectativas. Muito obrigado Avelino!!! Marcelo David 08/02/2021 19:50:14 Opa! Muito bom, eu ja usava o código para verificar os formulários abertos, mas não sabia que dava para saber das tabelas e consultas!! Muito obrigado por compartilhar! Data em detalhe 08/02/2021 18:55:08 Olá Avelino. Fala sério, colocou a data do seu aniversário só pra todo mundo mandar presente né. rs mas valeu a dica, muito interessante, vai ajudar muito nos projetos que desenvolvo. Grande abraço. Paulo Cesar - paulo@softaccess.com.br Gilberto Mendes 08/02/2021 13:24:03 Boa dica. Eu usava um método bem português, de checar se entre todos os formularios o que eu queria estava aberto. Parabéns pela dica. Gilberto Mendes www.accesspro.com.br Vagner 13/01/2021 17:37:09 Avelino, meu projeto está na rede interna na minha empresa. Usei suas dicas para saber que formulário está aberto mas não funcionou. Confirmei que o colega estava com determinado formulário aberto mas não dava essa informação. Será pq executo na rede? Flavio Pereira 01/01/2021 18:55:12 Avelino, uso um banco de dados com alguns usuários utilizando área de trabalho remota simultaneamente. Como poderia verificar se um determinado formulário foi aberto por um outro usuário? Obrigado. |