2015-12-09 20 views
1

出於測試目的,假設該碼來解鎖工作簿是1 我想要一個輸入框顯示在開放,如果用戶將在一個不正確的代碼/或選擇取消輸入框然後工作簿關閉。添加安全到我的工作簿內使用VBA

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 

目前它顯示,但運行,如果任何數字輸入,並關閉輸入框,並允許訪問,如果單擊取消。

+0

你'如果代碼< 0 > 1或假Then'是錯誤的(它是有效的語法,但可能不會做你認爲它會)。您必須在代碼< 0 Or Code > 1或代碼= False Then中重複每次代碼。你爲什麼不簡單地檢查Code angaist,好像'If Code <> 1 Then'? –

+0

文森特,是什麼讓我困惑是同時使用的語法如果代碼< 0 > 1或false,那麼我有它的工作了一段時間,直到發生了缺失,不得不重新做的代碼,我試過<> 1,但它再次接受任何號碼投入? –

回答

2

試試這個:

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 

只是測試它,它爲我工作。

我應該然而補充一點,這是非常低級別的安全性,這可能是任何人,即使VBA的基礎知識被繞過。您只需打開你的工作簿前設置Application.EnableEvents =假另一個工作簿(或VBA立即窗口),並且Workbook_Open事件將無法運行。

+0

您也可以在打開工作簿的同時按住shift按鈕禁用所有自動運行的代碼。 –

+0

@chris完美的謝謝你。我知道這是很基本的,雖然它不是嚴格地被用作安全功能,它更是我計劃有不同的人,然後觸發其它宏關閉不同的代碼工作簿個性化的工具。我只需要得到正確的基本部分,非常感謝 –

+2

馬修,不客氣。建議:如果你想讓不同的人看到不同的東西,你可以使用變量'Environ(「UserName」)'。例如 '選擇案例ENVIRON( 「用戶名」)/ 案 「馬修·邦德」/ MSGBOX 「這個文件的所有者」/ 案 「李四」/ MSGBOX 「別人」/ 結束Select' (/代表換行符的字符) –

相關問題