运行VBA代码前检查指定工作簿是否打开的需求实现
仅在目标工作簿打开时执行VBA代码的解决方案
原代码的问题在于,无论是否找到目标工作簿,最后都会执行提示弹窗,且未找到时后续逻辑仍会继续执行。按照需求,我们需要调整代码逻辑:仅当目标工作簿处于打开状态时才执行核心代码,未找到则直接终止子程序。
修改后的代码
Sub TestByWorkbookName() Dim wb As Workbook Dim wbFound As Boolean ' 标记是否找到目标工作簿 wbFound = False For Each wb In Workbooks If wb.Name = "file name" Then wbFound = True ' 此处编写需要执行的核心代码 ' run code... Exit For ' 找到目标后提前结束循环,提升执行效率 End If Next ' 未找到目标工作簿,直接终止子程序 If Not wbFound Then Exit Sub ' 若需要弹出提示,可取消下方注释 ' MsgBox "目标工作簿未打开" End If ' (可选)找到工作簿后需执行的其他后续代码 End Sub
关键调整说明
- 新增布尔变量
wbFound,用于跟踪是否找到目标工作簿 - 找到目标工作簿时,标记
wbFound = True,执行核心代码后用Exit For提前终止循环,避免无意义的遍历 - 循环结束后判断
wbFound状态,若未找到则通过Exit Sub直接终止子程序,不再执行后续逻辑
内容的提问来源于stack exchange,提问作者RTD
相关产品推荐
相关产品推荐

