PowerPoint VBA代码添加Else后异常:存在Tag却返回未找到
问题描述
我给幻灯片添加了Tags,想要遍历每张幻灯片,当找到指定Tag时弹出消息框。原本单独使用If语句能正常运行,但添加Else分支后,即便目标Tag存在,代码也只会返回Else分支的“not found”提示。
错误代码
Sub IfThenElse() Dim oSld As Slide For Each oSld In ActivePresentation.Slides If oSld.Tags("MYTAGNAME") = "341377444" Then MsgBox "Ref found" Else: MsgBox "not found" Exit For End If Next oSld End Sub
问题根源
问题出在Exit For的位置:它被放在了If/Else结构的同一层级,不管当前幻灯片是否匹配目标Tag,执行完If或Else分支后都会立刻退出循环。
- 如果第一张幻灯片没有目标Tag,直接弹出“not found”并终止循环,根本不会检查后续的幻灯片
- 就算目标Tag在后面的幻灯片中,循环也没有机会遍历到
修正后的代码
Sub FindTag() Dim oSld As Slide Dim tagFound As Boolean tagFound = False ' 初始化标记,记录是否找到目标Tag For Each oSld In ActivePresentation.Slides If oSld.Tags("MYTAGNAME") = "341377444" Then MsgBox "Ref found" tagFound = True Exit For ' 找到目标Tag后立即退出循环 End If Next oSld ' 遍历完所有幻灯片后,若仍未找到则提示 If Not tagFound Then MsgBox "not found" End If End Sub
内容的提问来源于stack exchange,提问作者Owen Johnson
相关产品推荐
相关产品推荐

