2015-08-25 39 views
2

我已经搜索了MSDN和网页,了解如何使用VBA在PowerPoint中选择一系列幻灯片,但无法弄清楚。它似乎应该与ActiveWindow.Selection.SlideRange有关,但我无法弄清楚如何设置开始和结束幻灯片。我所能找到的就是如何使用VBA来操作用户已经选择的一系列幻灯片;我需要让VBA选择范围。在PowerPoint中选择幻灯片的范围

具体来说,我想选择前一张幻灯片和当前选定幻灯片后的幻灯片,并将这三张幻灯片作为SlideRange返回。

回答

3

您可以通过使用获得活动幻灯片指数:

Dim intIndex As Long 
intIndex = ActiveWindow.View.Slide.SlideIndex 

然后,使用Slides.Range()功能之前,必须选择幻灯片和此索引之后:

Dim r As SlideRange 
Set r = ActivePresentation.Slides.Range(Array(intIndex - 1, intIndex, intIndex + 1)) 
r.Select 

您可能想防止索引< 1或大于演示文稿中幻灯片的数量。例如,如果在运行宏之前选择了第一张幻灯片,那么将不会有幻灯片0,尝试选择它将导致错误。

+0

唉!使用Range属性中的Array(item1,item2 ....)函数来标识要选择的项目。辉煌。 _那是我失踪的作品。谢谢! – DRC

+0

乐意帮忙。检查[this out](https://msdn.microsoft.com/en-us/library/office/Ff746710.aspx)获取更多关于'Slides.Range()'的信息。 – Bond

1

如何选择幻灯片之前和之后的示例。然后这个选择是应用的格式。

Sub ExampleSlideRange() 
    Dim index, indexB, indexA, count As Integer 
    Dim sr As SlideRange 
    index = ActiveWindow.View.Slide.SlideIndex 
    count = ActivePresentation.Slides.count 
    indexB = index - 1 
    indexA = index + 1 
    If indexB = 0 Then indexB = 1 
    If indexA > count Then indexA = count   
    Set sr = ActivePresentation.Slides.Range(Array(indexB, index, indexA)) 
    sr.Select 
    With Windows(1).Selection.SlideRange 
     .FollowMasterBackground = False 
     .Background.Fill.PresetGradient msoGradientHorizontal, 1, msoGradientLateSunset 
    End With 
End Sub 
相关问题