Funções globais de ...
 
Notifications
Clear all

Funções globais de uma pasta, MÓDULO ou PASTA DE CÓDIGO

5 Posts
2 Usuários
0 Reactions
1,034 Visualizações
(@jlfelipe)
Posts: 7
Active Member
Topic starter
 

Srs. Boa noite.

Postei uma consulta que incluía o uso de PROCV.
O membro robo8268 respondeu e questionou o uso de uma consulta via VBA em vez do uso da PROCV. Resultado:
Meu projeto tinha 2 pastas excel. Resolvi transformar a pasta utilizada como banco de dados, em uma base de dados em SQLite3. Vasculhando exemplos, consegui fazer a conexão ao banco e executar as instruções SQL conforme desejado, e gostei.
Minha outra pasta, considerando sua finalidade, contem 4 planilhas, exatamente iguais (Formulários padrão que permitem o envio de 4 objetos diferentes na mesma pasta).
Nesta pasta tem um módulo onde uma 'Sub Limpar()', acionada por um botão presente em cada planilha, limpa os campos do formulário. Funciona sem problemas.
Aqui esta o problema.
O conteúdo de uma célula ($C$16), aciona as funções para o tratamento com a base de dados.
Inclui no módulo em questão estas funções, mas não funcionaram. Só funcionam se forem incluídas no código de cada planilha. Isto é contra indicado, pois cada ajuste teria que ser repetido para cada planilha.
Minha questão é: AONDE INCLUIR ESTAS FUNÇÕES PARA QUE SEJAM EXECUTADAS EM QUALQUER PLAHILHA?
O gatilho é a célula $C$16. Se houver alteração de conteúdo e for <> "" chama as rotinas.
O que me intriga é que a função que faz Range("nnn").ClearContents esta no módulo, e a cada linha, consulta a Sub Worksheet_change e as funções da pasta de código e não as que estão no módulo.
AONDE ESTOU ERRANDO???

Agradeço uma ajuda.

Lauro

 
Postado : 03/07/2016 4:03 pm
(@mprudencio)
Posts: 2749
Famed Member
 

O Evento Worksheet_change funciona individualmente ou seja em cada planilha (guia) de sua Pasta de Trabalho

Teste seu codigo em Esta Pasta de Trabalho no evento Workbook SheetChange, é provavel que funcione como vc deseja.

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/07/2016 5:45 pm
(@jlfelipe)
Posts: 7
Active Member
Topic starter
 

MPrudencio boa noite.

Grato pela resposta.
Antes de mais nada, agora é que vi que abriu 2 tópicos.
Quando terminei e cliquei no botão enviar, retornou um erro que já não me lembro qual. Revi o texto e enviei novamente, quando retornou sucesso no envio.
Quanto a sua indicação, já testei.

Fui tanto no código escrito no módulo, onde a 'Sub Limpar()' funciona para todas as planilhas, quando no código individual de cada planilha e substitui:

Private Sub Worksheet_Change(ByVal Target As Range) por Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Simplesmente a Sub não mais é acionada, logo, devo continuar errando em algum lugar.
To na base da tentativa e ... tentativa.

Grato

Lauro

 
Postado : 03/07/2016 6:31 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Entao disponibliza o arquivo com os codigos

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/07/2016 6:33 pm
(@jlfelipe)
Posts: 7
Active Member
Topic starter
 

Cada dia aprende-se algo novo.

Agora tudo funciona.

Explicando.

A rotina que efetua a limpeza dos dados é somente:
Sub Limpar()
...
End Sub

Funciona para todas as planilhas se estiver em um módulo.

Já as demais funções, abrir banco de dados, tratar os dados, funcionam para todas as planilhas se estiverem no código da pasta de trabalho. Não funcionaram no módulo.
Talvez até tenha como fazer, mas no momento o que consegui foi nesta direção, e já me atende.
Grato pela atenção

Lauro

 
Postado : 03/07/2016 7:36 pm