使用VBA在我的工作簿内部添加安全性

出于testing目的,假设解锁工作簿的代码是1.我想要一个input框在打开时显示,如果用户input不正确的代码/或者在input框上select取消,则工作簿closures。

Private Sub Workbook_Open() ActiveSheet.Range("A1").Activate Code = Application.InputBox("Enter School Code", CancelCode) If Code < 0 > 1 Or False Then Code = Int(1) MsgBox ("Unrecognised Code") Application.Workbooks("CODING.xlsm").Close 'False End If End Sub 

目前它出现,但运行,如果任何数字input,也closuresinput框,并允许访问,如果单击取消。

尝试这个:

 Private Sub Workbook_Open() Dim Code As Variant Code = Application.InputBox("Enter School Code", CancelCode) If Not Code = 1 Then MsgBox ("Unrecognised Code") ThisWorkbook.Close SaveChanges:=False End If End Sub 

只是testing它,它适用于我。

但是,我应该补充说,这是极其低级的安全性,任何人甚至可以通过对VBA基本知识的理解来绕过。 您只需在打开工作簿之前在另一个工作簿(或VBA立即窗口)中设置Application.EnableEvents = False ,并且Workbook_Open事件根本不会运行。