这可能是一个非常愚蠢的问题,但我似乎无法找到解决方法......我定义了一个名为safe_mode的全局变量,它是一个布尔值。在我的一个潜艇中,我需要检查它的值并相应地给它一个新值。下面的代码将为您提供更多信息。
Private Sub Dev_Mode_Click()
Dim pass As String
If safe_mode = False Then
pass = InputBox("Password")
If pass <> "admin_rights" Then
Sheets("Database").Visible = xlSheetVeryHidden
Sheets("NewFile").Visible = xlSheetVeryHidden
Sheets("LandingPage").Dev_Mode.Caption = "Admin"
MsgBox ("Invalid Password")
safe_mode = False
MsgBox (safe_mode)
Exit Sub
Else
Sheets("Database").Visible = True
Sheets("NewFile").Visible = True
Sheets("LandingPage").Dev_Mode.Caption = "Log Off"
safe_mode = True
MsgBox (safe_mode)
Exit Sub
End If
End If
If safe_mode = True Then
Sheets("Database").Visible = xlSheetVeryHidden
Sheets("NewFile").Visible = xlSheetVeryHidden
safe_mode = False
Sheets("LandingPage").Dev_Mode.Caption = "Admin"
MsgBox ("Disconnect successful")
MsgBox (safe_mode)
Exit Sub
End If
End Sub
safe_mode的值已正确归因。换句话说,我在管理模式下变为真,在记录时变为假。但是,不遵守If safe_mode = true条件。我甚至在注销时都会提示输入密码,这是没有意义的,因为该代码仅在safe_mode = false并且变量在MsgBox中返回true时运行。在尝试注销变量时输入正确的密码时,变量仍然为真。将其设置为false的唯一方法是错误地输入密码。有人知道他们的方式吗?
谢谢! d。
答案 0 :(得分:0)
答案:在模块顶部将变量定义为public。它仅适用于模块。如果它在另一个模块中定义,则不会自动导入。
答案 1 :(得分:0)
所以我认为你的变量是空的。当您向safe_mode,e插入值时,我不清楚。 G。当你重新打开你的工作簿时,safe_mode将被清除,所以也许你需要一个在工作簿打开时触发的sub并设置safe_mode的值?第二个选项是将值存储在VBA隐藏选项卡中。
我已修改了一些您的代码,以便您可以对其进行测试(以检查safe_mode是否为空):
Public safe_mode As Boolean
Private Sub Dev_Mode_Click()
Dim pass As String
If IsEmpty(safe_mode) = True Then
MsgBox("Cannot check if admin mode")
Else
If (safe_mode = False) Then
pass = InputBox("Password")
If pass <> "admin_rights" Then
Sheets("Database").Visible = xlSheetVeryHidden
Sheets("NewFile").Visible = xlSheetVeryHidden
Sheets("LandingPage").Dev_Mode.Caption = "Admin"
MsgBox ("Invalid Password")
safe_mode = False
MsgBox (safe_mode)
Exit Sub
Else
Sheets("Database").Visible = True
Sheets("NewFile").Visible = True
Sheets("LandingPage").Dev_Mode.Caption = "Log Off"
safe_mode = True
MsgBox (safe_mode)
Exit Sub
End If
ElseIf (safe_mode = True) Then
Sheets("Database").Visible = xlSheetVeryHidden
Sheets("NewFile").Visible = xlSheetVeryHidden
safe_mode = False
Sheets("LandingPage").Dev_Mode.Caption = "Admin"
MsgBox ("Disconnect successful")
MsgBox (safe_mode)
Exit Sub
End If
End If
End Sub