发布网友 发布时间: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度旋转的图片。追问旋转倒没发现什么问题