EXCEL VBA 如何让图片在合并的单元格居中?

发布网友 发布时间:2022-04-24 14:25

我来回答

3个回答

热心网友 时间:2023-10-16 07:47

如果图片大小不超过单元格,代码是没有问题的,我参照进行了改写,执行效果满意,效果和代码见下面两图:


改写中,由于测试表全部是形状,取消了if判断,代码为了调试观察增加了两个中间变量,可以进一步简化如下为:

Option Explicit


Sub 图片居中()

    Dim st As Worksheet, pic As Shape, r As Range

    For Each st In Worksheets

        For Each pic In st.Shapes

            Set r = pic.TopLeftCell.MergeArea

            pic.Left = r.Left + (r.Width - pic.Width) / 2

            pic.Top = r.Top + (r.Height - pic.Height) / 2

        Next pic

    Next st

End Sub

热心网友 时间:2023-10-16 07:48

把For each SH in Sheets这句删除

删除下面的1个Next

把For each ShapePic in SH.Shapes这句改成:

For each ShapePic in Selection.ShapeRange

追问这个代码能加个没有选择图片会弹出窗口提示吗?不然没选择图片执行会报错

追答

注释行下方加

On Error Resume Next

For each ShapePic in Selection.ShapeRange下方加

    If Err Then MsgBox "未选择图片!", , "提示:": Exit Sub

热心网友 时间:2023-10-16 07:48

看代码没考虑到90、270度旋转的图片。追问旋转倒没发现什么问题

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com