如何将所有对象放置在距边框相同距离的所有单元格中

时间:2018-05-31 13:54:32

标签: excel vba excel-vba

目前我正在尝试制作一个工具来优化创建新的货架图,布局的过程。该文件有很多图片,现在我手动将它们相互放置并调整大小,但它仍然有一些区别。

https://i.stack.imgur.com/hChgm.png

如何以正确的尺寸将它们放置在正确的顺序中(它们应放在单元格的中间,下面有一个小的缩进)?

1 个答案:

答案 0 :(得分:1)

提示1:在按住alt键的同时拖动形状会导致Excel捕捉到单元格网格。 提示2:按住Control键并单击形状以全部选中它们,然后使用上下文功能区选项卡中的“对齐”,“顶部”。然后,您可以将所有这些拖动到正确的垂直位置。

此宏将对齐所有形状,与运行时当前选择的形状相同。它还会更新所有这些的宽度和高度。使用它:按照您喜欢的方式放置一张图片,包括尺寸。选择该图片,然后运行代码。请确保先保存文件,以防您不喜欢最终结果,这样您就可以关闭文件而不保存并打开刚刚保存的副本。

Sub AlignAndSizeAllShapes()
    Dim dLeftOffset As Double
    Dim dTopOffset As Double
    Dim dHeight As Double
    Dim dWidth As Double
    Dim oShp As Shape
    dLeftOffset = Selection.Left - Selection.TopLeftCell.Left
    dTopOffset = Selection.Top - Selection.TopLeftCell.Top
    dHeight = Selection.Height
    dWidth = Selection.Width
    For Each oShp In ActiveSheet.Shapes
        oShp.Left = oShp.TopLeftCell.Left + dLeftOffset
        oShp.Top = oShp.TopLeftCell.Top + dTopOffset
        oShp.Width = dWidth
        oShp.Height = dHeight
    Next
End Sub