我有一些代码需要我知道SlideIndex
要操作什么(例如,在哪里插入新幻灯片,在哪里插入 ChartObject 等)。大约 99% 的时间,我可以通过以下方式成功获得SlideIndex
:
Dim w as Long 'slide index variable
w = ActivePresentation.Windows(1).Selection.SlideRange(1).SlideIndex
其他 0.1% 的时间,当 时ActivePresentation.Windows(1).SelectionType = ppSelectionNone
,它会失败,因为(可以理解)它无法获得SlideIndex
选择的 ,因为没有选择。如果用户无意中“选择”了大纲窗格中两张幻灯片之间的空间,则可能会发生这种情况。
理想情况下,我想做的是获取SlideIndex
幻灯片窗格中可见的幻灯片属性:
我目前有一些代码可以测试是否
SelectionType
是ppSelectionNone
,所以我可以捕获条件,我只是还没有找到一种方法来识别幻灯片窗格的 slideIndex。
Function GetMySlide()
Dim w as Long
If Not ActivePresentation.Windows(1).Selection.Type = ppSelectionNone Then
w = ActivePresentation.Windows(1).Selection.SlideRange(1).SlideIndex
Set GetMySlide = ActivePresentation.Slides(w)
Else:
MsgBox "No slide is currently selected. Please select a slide in the Outline pane in order to proceed.", vbInformation
Set GetMySlide = Nothing
Exit Function
End If
End Function
更新
我的临时解决方案是使用公共变量lastUsedSlide
来尝试跟踪最近选择的幻灯片。我可以将它与WindowSelectionChange
事件结合起来,但希望有一个更直接的解决方案。如果我认为这种方法总是有效,我会使用它,但是,它可能会引入不可预见的错误,因为lastUsedSlide
它不是what_slide_i_am_currently_looking_at
.