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
Tags microsoft-excel vba