我在 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
, 保留密码结果并退出,如果为假。--vSub 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/