Notifications
Clear all

Isso é possivel? "Sub Worksheet_Hide_Column(byval...)"

6 Posts
4 Usuários
0 Reactions
1,811 Visualizações
(@xlarruda)
Posts: 0
New Member
Topic starter
 

Pessoal Bom dia!

Conhecemos diversos eventos para acionar uma macro no excel. Dentre eles está o Change, Selection_Change e vários outros.

Gostaria de saber se existe alguma forma, mesmo que improvisada, de acionar uma macro no momento em que eu Exibir/ Ocultar uma linha ou coluna da planilha..

 
Postado : 13/09/2018 8:50 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

xlarruda,

Boa tarde!

Eu desconheço a existência de um evento como esse. Seria bem interessante. Talvez, se tiver alguma forma de fazer, deva ser com módulos de classe ou com o uso de API's do windows.

Sei que com os módulos de classe é possível criarmos métodos, eventos e propriedade. Todavia, não sei como se poderia criar um evento que disparasse a execução de algo, quando uma linha fosse ocultada.

 
Postado : 13/09/2018 9:13 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!

Uma maneira improvisada seria inserir em uma célula qualquer da sua planilha uma fórmula como ALEATÓRIOENTRE(0;100), por exemplo, e colocar o seu código no evento Calculate da planilha.
Ao ocultar uma linha o evento Calculate é disparado.
Não sei se resolve o seu problema.

Abraço

 
Postado : 13/09/2018 10:34 am
(@xlarruda)
Posts: 0
New Member
Topic starter
 

colega jvalq tentei mas sem sucesso...

Meu caso é o seguinte:

Vamos usar uma UDF simples para saber a cor do interior de uma célula:

Function Cor_Preenchimento(cel As Range) As Long
Cor_Preenchimento = cel.Interior.ColorIndex
End Function

Minha intenção era que , ao mudar a cor da célula (no meu caso mais especifico seria ocultar uma coluna), a formula se atualizasse sozinha.

Hoje isso não acontece posi não há um evento no excel que acione um macro ao mudar cor, ou ocultar coluna por exemplo.
Espero que possam me ajudar. Abrç!

 
Postado : 13/09/2018 10:59 am
(@edsonbr)
Posts: 0
New Member
 

Xi, meu amigo xlarruda, acho que não vai rolar isso que vc quer.

O problema é que a ocultação ou alteração da largura/altura de coluna/linha além de não disparar nenhum evento próprio não dispara nem mesmo recálculo.

Se fosse exclusão ou inserção de colunas/linhas aí sim ocorre recálculo.

Aí seria fácil pois uma simples fórmula como =CÉL("largura";A:A) numa célula qualquer e, aproveitando a ideia que o JValq deu dispararia o Calculate.

Mas nem mesmo tentando incluir um argumento volátil como o JValq sugeriu, como =CÉL("largura";A:A)+0*ALEATÓRIO() ou uma UDF usando o Application.Volatile, nada surte efeito nesse caso.

O Word é muito mais generoso em relação a eventos, permitindo capturar eventos não só dos objetos (Application, Document, etc.) mas também de quase todos os comandos disponíveis (por exemplo, ao negritar algum texto ele mostrar uma msg..., etc). Não acho que dê pra fazer isso no Excel, infelizmente, mas talvez alguém saiba como...

 
Postado : 13/09/2018 12:19 pm
(@xlarruda)
Posts: 0
New Member
Topic starter
 

Muito Obrigado a resposta de todos!
Colega Edson, infelizmente vou ter de concordar com vc nesse sentido! Obrigado pela sua explicação...

 
Postado : 13/09/2018 2:27 pm