Forum Pplware

Versão Completa: Macro excel - Mostrar e ocultar objectos
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Alguém me pode ajudar com o seguinte problema:

Precisava de fazer aparecer ou desaparecer um objecto no Excel (Ex: Rectângulo, Circulo, triângulo), tendo em conta o valor de uma outra célula.

Resumindo, por exemplo, precisava que um rectângulo aparece-se caso a célula A1 = 1 e desaparece-se caso a célula A1 = 2.

Se alguém me poder ajudar ficaria muito agradecido.

Melhores cumprimentos

Obrigado 
Olá Smile

Colocas a forma que tu queres, utilizando o teu exemplo, um rectângulo. 
Seleccionas esse rectângulo e na caixa de texto logo atrás da barra de formulas vai aparecer o nome dessa forma, Rectângulo 1 por exemplo. Clicas sobre essa caixa de texto e alteras o nome para Rect (apenas para não usar-mos acentos) pressionas enter.

De seguida abres o VBA, seleccionas o procedimento Worksheet e o evento Change, depois basta "brincares" com o seguinte,


Código:
ActiveSheet.Shapes("Rect").Visible = True

Continuando com o teu exemplo,


Código:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim cel As integer

cel = Range("A1").Value

Select Case cel

Case 1

ActiveSheet.Shapes("Rect").Visible = True

Case 2

ActiveSheet.Shapes("Rect").Visible = False

End Select

End Sub

Quando a célula A1 é igual a 1 o rectângulo é visível, caso o valor mude para 2 o rectângulo deixa de estar visível.


De qualquer forma deixo aqui um ficheiro com o exemplo,

Ocultar Objecto - Download
Muito obrigado mais uma vez, visto que já é a segunda vez que me ajudas aqui !

Sem duvida que faz aquilo que eu apontei, porém não resolveu o meu problema, visto que eu pensava que iria-me desenrascar com o que expliquei!

Se tiveres disponibilidade, no link a baixo, tem um exemplo do meu problema !



De qualquer forma, muito obrigado mais uma vez !!!


https://www.dropbox.com/s/48zk5nbjzd6uph5/Duvida.xlsx
Não sabia que tinhas uma Combobox.

É praticamente a mesma coisa, tens apenas de associar uma macro a essa combobox e alterar a forma como "lês" o valor. E desta vez não vamos usar o evento change da folha mas sim o evento change da própria combo (num módulo).

No primeiro exemplo fui buscar directamente o valor à célula, desta vez vamos buscá-lo à combobox,


Código:
cel = Worksheets("Folha1").Shapes("combo1").ControlFormat.Value

O restante código é igual, apenas acrescentei o outro rectângulo. 

O código completo é o seguinte,


Código:
Sub combo1_Alteração()
Dim cel As Integer

cel = Worksheets("Folha1").Shapes("combo1").ControlFormat.Value

Select Case cel

Case 1

ActiveSheet.Shapes("Rect1").Visible = True
ActiveSheet.Shapes("Rect2").Visible = False

Case 2

ActiveSheet.Shapes("Rect1").Visible = False
ActiveSheet.Shapes("Rect2").Visible = True

End Select

End Sub


Desta forma trabalhamos directamente com a combobox, não é necessário criar um link entre uma célula e a combo, apenas se no teu caso for necessário mostrar o 1 e o 2.

Deixo aqui os dois exemplos, com e sem célula associada.

Com célula associada,

Rectângulos - Download

Sem célula associada,

Rectângulos_2 - Download


Acho que era isto que querias, se não for avisa. Wink
Perfeito!!!
Era exactamente isto que eu queria.
Eu pensava que com o primeiro código conseguia ler o resultado da célula de referencia da combobox, mas aparentemente enganei-me.

De qualquer forma, problema resolvido.

Mais uma vez muito obrigado pelas varias ajudas que me tens dado!!!
De nada. Smile
URL's de Referência