You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA实现锁定工作表自定义错误提示失败求助

解决锁定工作表自定义错误提示不生效问题

问题根源

你当前的代码存在几个关键错误:

  • 工作表中的OnError不是VBA自动触发的事件过程,无法响应用户操作
  • ThisWorkbook中的Worksheet_Selection不是标准事件名称,VBA不会识别执行
  • 代码中wSheet.Locked = False逻辑错误,工作表的Locked属性并非控制保护状态的正确方式

修正方案

步骤1:删除无效代码

删掉你在各工作表中添加的OnError过程,以及ThisWorkbook中的Worksheet_Selection过程。

步骤2:在ThisWorkbook中添加标准事件代码

打开ThisWorkbook的代码窗口,粘贴以下代码:

Option Explicit

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    ' 检查当前工作表是否处于保护状态,且选中的单元格是锁定状态
    If Sh.ProtectContents And Target.Locked Then
        Application.EnableEvents = False
        ' 取消选中锁定单元格,避免用户反复触发提示
        Sh.Cells(1, 1).Select ' 可替换为你希望跳转的任意单元格位置
        Application.EnableEvents = True
        
        ' 弹出自定义提示
        MsgBox "This day is closed." & vbNewLine & vbNewLine & _
               "The day has been closed and" & vbNewLine & _
               "further editing is prohibited!" & vbNewLine & _
               "Thank you", vbCritical, "STOP!"
    End If
End Sub

步骤3:确保工作表保护设置正确

当你用宏锁定单元格并保护工作表时,需确保保护逻辑正确,示例保护宏代码:

Sub LockAndProtectSheet()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    
    ' 锁定所有单元格(默认状态为锁定,若之前未解锁可省略此句)
    ws.Cells.Locked = True
    ' 保护工作表,可设置密码(可选),UserInterfaceOnly参数允许宏后台修改单元格无需反复解锁
    ws.Protect Password:="yourpassword", UserInterfaceOnly:=True
End Sub

额外优化:拦截双击编辑操作

如果需要阻止用户通过双击进入锁定单元格编辑状态,可在ThisWorkbook中追加以下代码:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    If Sh.ProtectContents And Target.Locked Then
        Cancel = True ' 取消默认双击编辑行为
        MsgBox "This day is closed." & vbNewLine & vbNewLine & _
               "The day has been closed and" & vbNewLine & _
               "further editing is prohibited!" & vbNewLine & _
               "Thank you", vbCritical, "STOP!"
    End If
End Sub

内容的提问来源于stack exchange,提问作者Jeremy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 03:40:22