Workbook_Open事件编译报错:如何将工作簿所有按钮值设为False?
Excel Workbook_Open事件按钮重置问题修复
原代码存在两个关键错误,导致编译报错:
Sheets.OLEObjects写法错误:Sheets是工作表集合,无法直接访问其OLEObjects属性,必须逐个遍历每个工作表- CommandButton控件无
Value属性:强行给CommandButton赋值Value = False会触发属性不存在的错误
修正后的代码如下:
Private Sub Workbook_Open() Dim ws As Worksheet Dim OleObj As OLEObject ' 遍历工作簿中所有工作表 For Each ws In ThisWorkbook.Sheets ' 遍历当前工作表内的所有ActiveX控件 For Each OleObj In ws.OLEObjects Select Case TypeName(OleObj.Object) Case "ToggleButton" OleObj.Object.Value = False ' 仅切换按钮需要重置Value状态 Case "CommandButton" ' 命令按钮无Value属性,无需处理;若需重置其他状态可在此添加逻辑 End Select Next OleObj Next ws End Sub
注意事项:
- 这段代码必须放在ThisWorkbook模块中,Workbook_Open事件才能正常触发
- 该代码仅针对ActiveX类型的按钮控件,若使用的是表单控件,逻辑需调整(表单控件的ToggleButton同样可通过
Value属性重置,CommandButton表单控件无状态需要重置)
内容的提问来源于stack exchange,提问作者Pom
相关产品推荐
相关产品推荐

