删除隐藏的幻灯片时出现“整数超出范围”错误

时间:2019-10-26 18:24:55

标签: vba powerpoint powerpoint-vba

我正在使用以下代码删除.pptm演示文稿中的所有隐藏幻灯片。它有254张幻灯片。

For i = 1 To ActivePresentation.Slides.Count
    If ActivePresentation.Slides(i).SlideShowTransition.Hidden = True Then
        ActivePresentation.Slides(i).Delete
    End If
Next i

但是,我得到一个错误,整数仅从1到154,并且155超出了它的范围。

有人可以解释吗?

运行ActivePresentation.Slides.Count时是否采用了Next i的新值?

谢谢。

1 个答案:

答案 0 :(得分:4)

问题在于删除了某些幻灯片后,某些索引 不再可用,但您的循环仍在尝试访问它们(因为for循环的上限没有不变)。

要解决此问题,请反向运行循环:

For i = ActivePresentation.Slides.Count To 1 Step -1
    If ActivePresentation.Slides(i).SlideShowTransition.Hidden = True Then
        ActivePresentation.Slides(i).Delete
    End If
Next i

或者,您可以像这样使用Do...While循环:

Dim i As Long: i = 1
Do While i <= ActivePresentation.Slides.Count
    If ActivePresentation.Slides(i).SlideShowTransition.Hidden = True Then
        ActivePresentation.Slides(i).Delete
    Else
        i = i + 1
    End If
Loop