PowerPoint VBA中如何创建n1-n2连续整数数组简化幻灯片选取
实现连续幻灯片选中的简洁VBA写法
原有写法问题
选中PPT指定范围幻灯片的原生VBA需要手动枚举所有幻灯片序号,选中连续多页时写法冗余:
' 选中前10张幻灯片的原生写法 ActivePresentation.Slides.Range(Array(1,2,3,4,5,6,7,8,9,10)).Select
期望实现连续区间直接传参的简洁效果,对应伪代码:
ActivePresentation.Slides.Range(CreateRange(1,10)).Select
具体实现
在VBA工程中插入标准模块,写入以下自定义函数即可实现CreateRange能力:
Function CreateRange(startNum As Long, endNum As Long) As Variant Dim arr() As Long Dim i As Long, arrIndex As Long ' 自动修正起止参数顺序,参数写反也能正常运行 If startNum > endNum Then Dim swapTemp As Long swapTemp = startNum startNum = endNum endNum = swapTemp End If ReDim arr(endNum - startNum) arrIndex = 0 For i = startNum To endNum arr(arrIndex) = i arrIndex = arrIndex + 1 Next CreateRange = arr End Function
使用说明
- 函数粘贴完成后即可直接按伪代码的格式调用,无需其他配置
- 支持任意连续幻灯片区间选择,比如选中第5到第22张,直接写
ActivePresentation.Slides.Range(CreateRange(5,22)).Select - 传入的序号超出当前文稿实际幻灯片总数时,会和原生枚举写法一样抛出下标越界错误,逻辑完全对齐
小提示:如果需要同时选中多段不连续的区间,也可以结合数组拼接的方式扩展该函数,满足更复杂的选中需求。
内容的提问来源于stack exchange,提问作者Code Whisperer
相关产品推荐
相关产品推荐

