输入错误时,带有密码的 VBA 宏仍然可以运行

标签 vba excel

我在 Excel 工作表中有一个 VBA 宏,它刷新 SQL 查询但受密码保护——至少我是这么认为的。宏的工作方式是当您单击按钮时,会出现密码提示,如果输入正确,查询会刷新。如果输入错误,则不会发生任何事情。

我最近发现的是,即使有人输入了错误的密码,查询仍然会刷新。如果密码不正确,我将在我的代码中输入什么来阻止宏运行?

Sub Button1_Click()

Dim password As Variant
 password = Application.InputBox("Enter Password", "Password Protected")

Select Case password
     Case Is = False
         'do nothing
     Case Is = "Select15"
         Range("A1").Value = "Code"
     Case Else
         MsgBox "Incorrect Password"
End Select


 For Each sh In Worksheets
 If sh.FilterMode Then sh.ShowAllData
 Next

ActiveWorkbook.RefreshAll


End Sub

最佳答案

Sub Button1_Click()

Dim password As Variant
 password = Application.InputBox("Enter Password", "Password Protected")

Select Case password
     Case Is = False
         'do nothing
          exit sub
     Case Is = "Select15"
         Range("A1").Value = "Code"
     Case Else
         MsgBox "Incorrect Password"
         exit sub
End Select


 For Each sh In Worksheets
 If sh.FilterMode Then sh.ShowAllData
 Next

ActiveWorkbook.RefreshAll


End Sub

如果密码不正确,您应该退出子程序。
--^^

或者您可以创建一个 bool 值 bCorrect , 保留密码结果并退出,如果为假。--v
Sub Button1_Click()

    Dim password As Variant
    Dim bCorrect As Boolean

    password = Application.InputBox("Enter Password", "Password Protected")

    Select Case password

    Case Is = False
        'do nothing
    Case Is = "Select15"
        bCorrect = True
        Range("A1").value = "Code"
    Case Else
        MsgBox "Incorrect Password"
    End Select

    If Not bCorrect Then Exit Sub

    For Each sh In Worksheets
        If sh.FilterMode Then sh.ShowAllData
    Next

    ActiveWorkbook.RefreshAll

End Sub

关于输入错误时,带有密码的 VBA 宏仍然可以运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43920022/

相关文章:

arrays - 从 VBA 函数返回数组的正确方法

excel - 优化 VBA 脚本以组合和整合

excel - Excel 公式中的 -- 有何作用?

excel - 将工作表分配给变量时出现运行时错误 13

excel - UDF 从通用字符串中提取特定数据

excel - 检查对单元格的引用是否有效

vba - 使用 Excel 中的 VBA 将 2 个单元格的内容合并到另一个第 3 个单元格中

excel - .NullString 属性在输出中将 "-"显示为 0 的问题

vba - 在已经打开的 excel 上使用 VBS 运行宏

vba - 如何使用空白单元格作为引用来执行 sumif?