如何使模块之间的变量值保持不变?

时间:2014-04-04 13:03:54

标签: excel vba variables passwords global-variables

我一直在尝试在Excel应用ICT项目的excel VBA中创建这种密码保护类型的东西。所以我创建了这个模块来保护工作簿中的所有工作表:

Public Sub Auto_Open()

Dim ws As Worksheet
Dim psword As String

psword = "Unit 12"
For Each ws In Worksheets
    ws.Protect Password:=psword
Next ws

End Sub

现在我要做的事情是,每当有人打开用户表单时,会出现一个输入框,询问密码,如果有人输入了无效的密码,则会出现一个消息框。它将是这样的:

Private Sub UserForm_Activate()

If ActiveSheet.ProtectContents = True Then
x = InputBox("Please type in the password", "Password")
If x = psword Then
Call Module1.Sheets_unlock
Else
Msgbox("The password is invalid")
End
End If
End If

现在问题是UserForm_Activate()子中的密码更改为空。我已经尝试将公共psword作为字符串,但它不起作用。我该怎么办?

1 个答案:

答案 0 :(得分:0)

Dim 的地方。

将标准模块中的psim调整为模块中所有其他子项的上方,如:

Public psword As String