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

输入错误密码时关闭未保存工作簿的VBA代码故障排查

问题排查与修正方案

嘿,我来帮你搞定这个VBA代码的问题,核心问题出在错误密码的判断逻辑上,还有一些可以优化的地方,咱们一步步拆解:

1. 导致代码失效的核心问题

你最后一行的错误密码判断写法完全不对:

If mypass <> "BJE" Or "BFL" Or "EBR" Or "DME" Or "AJA" Or "RLC" Or "JMK" Or "AXB" Or "JIK" Or "KKO" Then ThisWorkbook.Close

在VBA里,Or运算符两边必须是完整的布尔表达式(比如mypass <> "BFL"),你直接写"BFL"这类字符串,VBA会把非空字符串默认当成True——这就导致整个条件永远成立!哪怕你输入了正确的密码,这行代码也会触发关闭,自然达不到你想要的效果。

2. 优化后的完整代码

我给你重写了代码,不仅修复了逻辑问题,还简化了结构,同时处理了用户取消输入的场景:

Sub Unhide()
    Dim mypass As Variant
    ' 指定输入类型为文本,避免取消操作返回异常值
    mypass = Application.InputBox( _
        prompt:="Enter password - In case of wrong password please close the file and try again", _
        Type:=2)
    
    ' 用户点取消时直接无保存关闭
    If mypass = False Then
        ThisWorkbook.Close SaveChanges:=False
        Exit Sub
    End If
    
    ' 用Select Case替代重复的If,更易读易维护
    Select Case mypass
        Case "BJE"
            Sheets("Overview").Visible = True
        Case "BFL"
            Sheets("BFL").Visible = True
        Case "EBR"
            Sheets("EBR").Visible = True
        Case "DME"
            Sheets("DME").Visible = True
        Case "AJA"
            Sheets("AJA").Visible = True
        Case "RLC"
            Sheets("RLC").Visible = True
        Case "JMK"
            Sheets("JMK").Visible = True
        Case "AXB"
            Sheets("AXB").Visible = True
        Case "JIK"
            Sheets("JIK").Visible = True
        Case "KKO"
            Sheets("KKO").Visible = True
        Case Else
            ' 所有非正确密码的情况,无保存关闭工作簿
            ThisWorkbook.Close SaveChanges:=False
    End Select
End Sub

3. 关键改进说明

  • 修正判断逻辑:用Case Else统一处理错误密码/非预期输入,彻底避免之前的逻辑漏洞
  • 处理取消操作:添加Type:=2参数,确保输入框返回文本类型,用户点取消时直接触发关闭
  • 简化代码结构:Select Case比一堆零散的If更整洁,后续加新密码直接在Case里追加就行
  • 明确关闭规则:SaveChanges:=False强制不保存就关闭,不会弹出保存提示框干扰用户

这样修改后,就能完美实现你的需求:输入正确密码显示对应工作表,输入错误密码或取消操作时,工作簿直接无保存关闭。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:23:46