Como devolver formas ao padrão no Excel

2

Eu tenho cerca de 70 formas em um documento de planejamento que eu uso para o trabalho, está tudo bem, mas estou tentando adicionar um novo recurso. Essas formas são alteradas usando pontos de edição a cada semana para aparecer em um mapa, mas às vezes a forma "A" pode não ser usada na qual eu só quero voltar para um tamanho padrão junto com todas as outras formas. Alguém sabe como eu poderia conseguir isso através de uma macro, eu tentei muitas coisas e procurei em todos os lugares, mas eu estou no meu juízo final ...

Se uma forma não for padrão, defina todas as formas não padrão para o tamanho padrão.

Obrigado antecipadamente

    
por Craig 03.02.2011 / 13:33

1 resposta

0

Não sei onde o Excel armazena a altura e a largura padrão das formas. Presumo que, por padrão, você queira dizer o tamanho da forma quando clica para colocar em vez de arrastar para o tamanho. Ovais, por exemplo, são 72x72. O mesmo para quadrados.

Uma maneira de fazer isso é usar a propriedade AlternativeText da forma. Você pode armazenar os tamanhos padrão nesta propriedade. Clique com o botão direito do mouse na forma, selecione Formatar Forma Automática, vá para a guia Web e digite 72 | 72. Estou usando o pipe como um delimitador entre largura e altura. Você teria que descobrir qual é o tamanho padrão para cada tipo de forma que possui, mas, como eu disse, não sei onde o Excel a armazena. Uma vez que você tenha o conjunto de propriedades AlternativeText, você pode usar um código como o abaixo

Sub FixShape()

    Dim shp As Shape
    Dim vaDefault As Variant

    Const sDELIM = "|"

    For Each shp In Sheet1.Shapes
        If Len(shp.AlternativeText) > 0 Then
            vaDefault = Split(shp.AlternativeText, sDELIM)
            shp.Width = vaDefault(0)
            shp.Height = vaDefault(1)
        End If
    Next shp

End Sub

Isso definirá todas as formas que tiverem algo no AlternativeText para a largura e a altura registradas. Isso supõe que você não está usando o AlternativeText para outra coisa.

Se você não quiser usar o AlternativeText para armazená-lo, poderá codificar os valores no VBA

Sub FixShape2()

    Dim shp As Shape

    Const lDEFOVALHEIGHT As Long = 72
    Const lDEFOVALWIDTH As Long = 72
    Const lDEFSQRHEIGHT As Long = 72
    Const lDEFSQRWIDTH As Long = 72

    For Each shp In Sheet1.Shapes
        Select Case shp.AutoShapeType
            Case msoShapeOval
                shp.Height = lDEFOVALHEIGHT
                shp.Width = lDEFOVALWIDTH
            Case msoShapeRectangle
                shp.Height = lDEFSQRHEIGHT
                shp.Width = lDEFSQRWIDTH
        End Select
    Next shp

End Sub
    
por 03.02.2011 / 15:50