合并实现多行隐藏功能的两段VBA代码需求
合并Excel VBA隐藏行的Worksheet_SelectionChange事件代码
同一个Excel工作表中不能存在两个同名的事件过程,这是你直接堆叠代码无法运行的核心原因。正确的做法是将两段代码的逻辑合并到同一个Worksheet_SelectionChange事件中,同时去掉重复的执行语句:
合并后的完整代码
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' 仅执行一次工作表保护,UserInterFaceOnly参数允许VBA修改受保护工作表 Sheets("Re-Hire Questionnaire").Protect Password:="Testing2022!", UserInterFaceOnly:=True ' 根据B12的值控制9-11行的显示/隐藏 Rows("9:11").EntireRow.Hidden = (Range("B12").Value = False) ' 根据B19的值控制16行的显示/隐藏 Rows("16:16").EntireRow.Hidden = (Range("B19").Value = False) End Sub
关键优化说明
- 移除了重复的工作表保护语句,避免不必要的重复执行
- 将原有的If-Else判断简化为直接赋值逻辑,代码更简洁高效(判断结果直接对应行的隐藏状态)
- 所有控制逻辑都整合到唯一的
Worksheet_SelectionChange事件过程中,符合VBA的事件机制要求
内容的提问来源于stack exchange,提问作者Hakeem Toure
相关产品推荐
相关产品推荐

