O Excel VBA não está obtendo as dimensões corretas da forma

0

Eu tenho uma macro para colocar formas dentro da área de impressão do meu arquivo excel. Resumidamente, para fazer isso eu uso a largura das formas selecionadas ( Application.Selection ) e removê-lo da largura da área de impressão e depois dividi-lo no total de formas selecionadas.

Funciona 97% do tempo. O 3% não funciona é porque o excel parece não conseguir o dimenson da forma certa. A largura é igual a by50%.

Então eu me pergunto como e por que isso acontece? Parece ser aleatório, embora quando isso acontece, é somente quando mais de uma forma é selecionada. Se eu executar o script selecionando apenas a forma problemática, as dimensões serão aceitáveis.

Aconteceu com mais alguém e como isso pôde ser corrigido?

- Aqui está o tamanho da forma no excel:

ApartirdessasdimensõesesabendoqueostamanhosnoExcelVBAestãoempontoselessetraduzememaltura≈92,41elargura≈191,91.

-Aquiestáotamanhoquerecebodovbaquandoduasformassãoselecionadas(armazenadasemumacoleçãocollShp):

-Aquiéquandoapenasasformasproblemáticassãoselecionadas:

+++Editadoparaadicionaralgumcódigo:+++Aquiestáapartedocódigomexendocomasformas.Parecequeéaleatórioporqueacabeideabriromesmoarquivoeostamanhosestãobemagora...Asformassãocapturasdetelasimplescomo"printscreened" e coladas no arquivo excel.

Sub centerShapeCompressed()

    If VarType(Application.Selection) <> 9 Then Exit Sub 'Type "9" is type "Object"

    Dim shp As Object

    Dim xlapp As Application
    Set xlapp = Excel.Application

    On Error Resume Next
    Debug.Print Application.Selection.Count 'if "Selection" contains less than 2 -> throws an error

    If Err.Number = 0 Then 'If Selection.Count > 1

        On Error GoTo 0

        Dim collShp As Collection
        Set collShp = New Collection
        For Each shp In Application.Selection
           collShp.Add shp, shp.Name
        Next shp

    Else

        Set shp = Application.Selection

    End If

End Sub
    
por simpLE MAn 21.04.2017 / 18:17

0 respostas