我对powerpoint vba都很陌生。我想做的就是写一小段代码,这样我就可以根据点击按钮的选择来改变幻灯片的布局。
我的代码问题是我得到了运行时错误438.
这就是我所拥有的:
Private Sub CommandButton1_Click() 'Klick Button 1'
ActivePresentation.Slides(10).Delete
ActivePresentation.Slides(9).Delete
ActivePresentation.Slides(8).Delete
Dim x As Integer
For x = 1 To 100
With ActivePresentation.Slides(x)
If .CustomLayout = .CustomLayout(8) Then
Set .CustomLayout = .CustomLayout(12)
End If
End With
Next x
End Sub
编辑:错误说明是:"对象不支持此属性或方法"
我非常感谢任何帮助和建设性意见。
编辑II:我现在明白.CustomLayout返回自定义布局。但是,如何设置/更改certrain幻灯片的布局?我该如何解决? 非常感谢你
编辑III:我仍然没有解决方案,我现在真的感到沮丧。你们这是我猜的最后一次机会。所以现在我的代码再次出现:
Dim x As Integer
For x = 7 To 100
If ActivePresentation.Slides(x).CustomLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(8) Then ActivePresentation.Slides(x).CustomLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(12)
End If
Next x
我仍然得到上面描述的运行时错误。我怎样才能摆脱它并使我的代码工作? 非常感谢你!
答案 0 :(得分:0)
CustomLayout是一个定义自定义布局的对象,它们在界面中:
在vba中,可以使用ActivePresentation.Designs.SlideMaster对象访问它们。
每个Slide对象显然只能应用1个CustomLayout,您可以使用属性CustomLayout访问它。
因此,如果您想使用CustomLayout n更改幻灯片1 CustomLayout。 3你必须这样做:
ActivePresentation.Slides(1).CustomLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(3)
请参阅:MSDN
关于你的代码,你必须在你的if块comaprison中使用Names,所以:
If ActivePresentation.Slides(x).CustomLayout.Name = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(3).Name Then
ActivePresentation.Slides(x).CustomLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(7)
End If