Apagar e Criar Formas Imagens com Excel VBA

Apagar e Criar Formas Imagens com Excel VBA

Veja neste artigo como apagar formas no Excel e criar novas formas no Excel utilizando VBA.

No exemplo realizaremos a comparação através de uma forma de uma seta, que demonstra se o período anterior ficou acima ou abaixo do ano anterior.

Este exemplo foi adaptado do livro VBA e Macros para Microsoft Office 2007 de Bill Jelen e Tracy Syrstad e serve como o estudo de uma macro que cria um desenho de uma seta de acordo com o mês selecionado na planilha.

Criar formas com VBA Excel

Criar Formas de Imagens com VBA no Excel

No nosso exemplo estamos criando setas automaticamente conforme a mudança dos valores.

Caso o valor do ano seguinte for superior à do ano anterior a seta será verde e pra cima.

E caso o valor de 2010 for menor que 2009 então a forma será para baixo com a cor vermelha.

Abaixo o código fonte utilizado na macro que cria o desenho:

    ActiveSheet.Shapes.AddShape(ArrowDegree, 330.25, 60.5, 30, 20).Select
    With Selection.ShapeRange
        With .Fill
            .Visible = msoTrue
            .Solid
            .ForeColor.SchemeColor = ArrowColor
            .Transparency = 0#
        End With
        With .Line
            .Weight = 0.75
            .DashStyle = msoLineSingle
            .Style = msoLineSingle
            .Transparency = 0#
            .Visible = msoTrue
            .ForeColor.SchemeColor = 64
            .BackColor.RGB = RGB(255, 255, 255)
        End With
        Range("G3").Select 'Posiciona a seleção de volta na lista suspensa
    End With

Entendendo o código acima:

O código ActiveSheet.Shapes.AddShape(ArrowDegree, 330.25, 60.5, 30, 20).Select cria uma forma no Excel

AddShape recebe então o tipo da forma, no caso ArrowDegree é o tipo de forma que foi inserido e então são definidas as propriedades de altura, largura, posição na altura e na esquerda.

Para outras formas basta gravar uma macro e criar uma outra imagem e pegar o nome correspondente, como no caso do ArrowDegree.

As propriedades que seguem realizam as configurações quanto à imagem.

Você pode também criar a sua imagem com o gravador de macros e deois alterar estas propriedades conforme os parâmetros da sua imagem.

Criar formas com VBA Excel 2

Como Deletar Formas de Imagens com VBA Excel

Para deletar as imagens foi utilizado o seguinte código VBA Excel

    For Each sh In ActiveSheet.Shapes
        If sh.Name Like "*Arrow*" Then
            sh.Delete
        End If
    Next sh

No código acima veja que foi realizado um loop por objetos usando For Each para que verifique os objetos de formas e é utilizado então o sh.Delete para que o shape seja deletado.

Para o loop foram utilizados Activesheet.Shapes com o for each, mas veja também que fo iutilizado sh.name like “*Arrow*” para que verifique se é aquele tipo de objeto Arrow no caso.

Download da Planilha

Para realizar o download da planilha basta clicar no botão abaixo e preencher o nome e e-mail para areceber o arquivo imediatamente.

Baixe a planilha

Marcos Rieper