Erro em tempo de execução 91
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 10x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Usuário Madson:
Avelino,
quando tento utilizar o objRibbon.Invalidate para revalidar a ribbon, depois de carregada, recebo a seguinte mensagem:
Erro em tempo de execução "91";
A variável do objeto ou a variável do bloco "With" não definida.
Sendo que a variável objRibbon é definida: Public objRibbon As IRibbonUI e depois setada pela rotina fncRibbon(ribbon As IRibbonUI).
Poderia me dar uma luz, de como resolver isso ou me dizer onde estou errando para que eu possa corrigir?
Suporte:
Madson,
esse erro já aconteceu na primeira tentativa de rodar o aplicativo com a ribbon ou aconteceu depois de alguma alteração específica no projeto? Você especificou o nome da ribbon em Opções > Banco de Dados Atual> Nome da faixa de Opções ?
- Abra o seu projeto no Modo Design.
- Abra o VBA e no menu DEPURAR clique em COMPILAR. Se encontrar algum erro, corrija. Repita o COMPILAR até que não encontre mais erro.
Usuário Madson:
O erro ocorre depois que a ribbon foi carregada, quando tento fazer uma alteração. Exemplo: trocar de usuário ou fazer uma mudança no Xml da ribbon com o usuário logado.
A ribbon está setada em Opções>Bando de dados atual>Nome na faixa de opções.
PS.: o nome da tabela, onde estão gravadas as ribbons, não é a padrão do Microsoft Access (USysRibbons). Coloquei um nome próprio: pds_ribbon.
Estou te enviando um arquivo exemplo.
Suporte:
Madson,
o erro 91 acontece quando não é possível ter acesso a ribbon carregada na memória.
Segue o seu arquivo exemplo adaptado para o teste.
- abra o aplicativo
- uma tela de login será aberta, com a ribbon desabilitada;
- clique no botão logar e sua ribbon será carregada normalmente;
- clique no botão agendar da ribbon;
- um formulário será aberto;
- clique no botão do formulário e observe a Guia Configurações
da ribbon sendo visualizada ou não.
Vamos testar agora uma simulação do erro 91:
- abra o código do botão do formulário de login e altere a posição da linha em vermelho para a última posição.
Faça o login aqui para ter acesso ao código.
- salve e feche o aplicativo;
- reabra o aplicativo;
- clique no botão Logar e veja o erro acontecendo. O motivo é que a ribbon não está disponível (está oculta) no momento da chamada do
Invalidate.
Vamos a outra simulação do erro 91:
- retorne com a posição da linha que alteramos para a parte superior do código.
- vá em Arquivo > Opções > Banco de Dados Atual e apague o campo
Nome da Faixa de Opções;
- feche o aplicativo;
- retorne a abrir o aplicativo. A ribbon não estará disponível, apesar de ser carregada pela função da macro AutoExec;
- abra o formulário frmTeste. Clique no botão Seta Guia
Configurações e veja o erro 91 ocorrido pelo fato da ribbon não estar
disponível naquele momento.
Usuário Madson:
Obrigado Avelino, percebi que a referência à ribbon havia sido perdida, achei que fosse necessário revalidar a carga do objeto: Set objRibbon = ribbon
Bem, coloquei o código DoCmd.ShowToolbar "ribbon",acToolbarYes na frente do objRibbon.Invalidate e a atualização passou.
Estava ocorrendo esse problema também, quando havia a troca do usuário na tela de login. Como fiz a mesma alteração no código, o erro não está mais acontecendo.
Mais uma vez obrigado.
Download
An Invitation
Meet the first tool in the world, developed in Microsoft Access, for the configuration and creation of custom ribbons. Ribbons have come to stay, therefore it is crucial that you get to know and learn this application!
Click here and get to know everything about this amazing tool!
Não há comentário |