'Integer out of range'删除隐藏的幻灯片时出错

问题描述 投票:0回答:1

我正在使用以下代码删除.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的新值?

谢谢。

vba powerpoint powerpoint-vba
1个回答
0
投票

问题是某些幻灯片被删除后,它们的索引不再可用,但您的循环仍试图访问它。

反向运行循环:

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
© www.soinside.com 2019 - 2024. All rights reserved.