VBA处理无规律编号形状时能否用Select Case简化代码?
可以使用Select Case语法简化这类离散编号的批量操作,但是你提到的Select Case 23, 39, 61, 72, 98写法不符合VBA语法规范,正确实现方式如下:
1. Select Case 实现方案
核心逻辑是遍历当前幻灯片所有形状,提取椭圆形状的编号后通过Select Case匹配目标编号,匹配成功就执行样式修改:
Dim shp As Shape Dim ovalNum As Integer With nGameSlide For Each shp In .Shapes ' 筛选所有名称符合"Oval X"格式的形状 If Left(shp.Name, 5) = "Oval " Then ovalNum = CInt(Mid(shp.Name, 6)) Select Case ovalNum ' 多个匹配值直接用英文逗号分隔 Case 23, 39, 61, 72, 98 shp.Fill.ForeColor.RGB = RGB(255, 192, 0) End Select End If Next End With
如果后续需要增删修改目标编号,只需要调整Case后的值列表即可,维护成本很低。
2. 更简洁的数组遍历方案
如果你的目标编号固定,也可以直接把编号存入数组遍历,代码更短:
Dim targetOvals As Variant Dim i As Integer ' 把所有需要修改的椭圆编号存入数组 targetOvals = Array(23, 39, 61, 72, 98) With nGameSlide For i = LBound(targetOvals) To UBound(targetOvals) .Shapes("Oval " & targetOvals(i)).Fill.ForeColor.RGB = RGB(255, 192, 0) Next End With
内容的提问来源于stack exchange,提问作者Bhavesh Shaha
相关产品推荐
相关产品推荐

