Powerpoint VBA运行时错误438(简单)

时间:2014-12-17 09:55:28

标签: vba powerpoint powerpoint-vba

我对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

我仍然得到上面描述的运行时错误。我怎样才能摆脱它并使我的代码工作? 非常感谢你!

1 个答案:

答案 0 :(得分:0)

CustomLayout是一个定义自定义布局的对象,它们在界面中:

enter image description here

在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