Powerpoint VBA宏将所有选定对象调整为最大对象
背景 我添加了一个外接程序,它执行以下操作: 对于所有选定的powerpoint对象(例如4个矩形),外接程序将调整所有对象的高度和宽度,以匹配选择中最大对象的高度和宽度 我试图编写一个VBA宏来复制此外接程序,但什么也没发生(修改以下问题中的代码:): 问题Powerpoint VBA宏将所有选定对象调整为最大对象,vba,powerpoint,Vba,Powerpoint,背景 我添加了一个外接程序,它执行以下操作: 对于所有选定的powerpoint对象(例如4个矩形),外接程序将调整所有对象的高度和宽度,以匹配选择中最大对象的高度和宽度 我试图编写一个VBA宏来复制此外接程序,但什么也没发生(修改以下问题中的代码:): 问题 有没有关于如何使这段代码工作的想法?经过进一步研究,这里有一段代码可以工作(不确定它是否真的有效,因为我是VBA新手): Sub resizeral() 暗w为双色 双倍调暗h 形状暗淡的物体 w=0 h=0 '在选定的所有对象中循环,以
有没有关于如何使这段代码工作的想法?经过进一步研究,这里有一段代码可以工作(不确定它是否真的有效,因为我是VBA新手):
Sub resizeral()
暗w为双色
双倍调暗h
形状暗淡的物体
w=0
h=0
'在选定的所有对象中循环,以将最大宽度和高度指定给w和h
对于i=1到ActiveWindow.Selection.ShapeRange.Count
Set obj=ActiveWindow.Selection.ShapeRange(一)
如果目标宽度>w,则
w=物体宽度
如果结束
如果目标高度>h,则
h=物体高度
如果结束
下一个
'如果选定对象的高度或宽度小于h/w,则遍历所有对象以调整其大小
对于i=1到ActiveWindow.Selection.ShapeRange.Count
Set obj=ActiveWindow.Selection.ShapeRange(一)
如果目标宽度小于w,则
物体宽度=w
如果结束
如果目标高度
从理论上讲,您可以应用一些小的调整来提高效率。但实际上,你不太可能看到不同之处。谢谢你的反馈!(我使用您的外接程序说明将此宏添加到我的ppt中)。
Sub test()
Dim w As Double
Dim h As Double
Dim obj As Shape
w = 0
h = 0
For i = 1 To ActiveWindow.Selection.ShapeRange.Count
Set obj = ActiveWindow.Selection.ShapeRange(i)
If obj.Width > w Then
w = obj.Width
Else
obj.Width = w
End If
If obj.Height > h Then
h = obj.Height
Else
obj.Height = h
End If
Next
End Sub
Sub resizeAll()
Dim w As Double
Dim h As Double
Dim obj As Shape
w = 0
h = 0
' Loop through all objects selected to assign the biggest width and height to w and h
For i = 1 To ActiveWindow.Selection.ShapeRange.Count
Set obj = ActiveWindow.Selection.ShapeRange(i)
If obj.Width > w Then
w = obj.Width
End If
If obj.Height > h Then
h = obj.Height
End If
Next
' Loop through all objects selected to resize them if their height or width is smaller than h/w
For i = 1 To ActiveWindow.Selection.ShapeRange.Count
Set obj = ActiveWindow.Selection.ShapeRange(i)
If obj.Width < w Then
obj.Width = w
End If
If obj.Height < h Then
obj.Height = h
End If
Next
End Sub