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á
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
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.
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!!!