This is because bBlockEvents is a boolean (True/False) variable, and this is
the same as saying
If bBlockEvents = True Then Exit Sub
--
HTH
RP
(remove nothere from the email address if mailing direct)
"Nicole B" wrote in message
...
I was wondering... how does your statement:
If bBlockEvents Then Exit Sub
work? is VB assuming some kind of value?
Thanks.
"Tom Ogilvy" wrote:
Let's look at a simplified situation which is probably the cause of your
problem.
If I put in code like
Private Sub ToggleButton1_Click()
MsgBox ToggleButton1.Value
With ToggleButton1
.Caption = "Protect Sheets"
.Value = False
End With
End Sub
then the click event runs twice. When you change the value to False, it
triggers another click.
You would need to do something like
Public bBlockEvents
Private Sub ToggleButton1_Click()
If bBlockEvents Then Exit Sub
bBlockEvents = True
MsgBox ToggleButton1.Value
With ToggleButton1
.Caption = "Protect Sheets"
.Value = False
End With
bBlockEvents = False
End Sub
so i use a public variable to cause the second click event to exit
immediately.
--
Regards,
Tom Ogilvy
"Nicole B" wrote in message
...
I have a userform that prompts for a password. I posted yesterday
regarding
the fact that when I click a button, it runs through a macro, either
opens
a
msgbox or opens a userform, then when you click OK to close the
userform
(and
run another macro to validate the input), the userform, or message
box,
reopens.
I debugged and stepped through the macro (from
ProtectionToggle_Click()
Sub
to called macros) and it did not come up twice. Also, I have run the
userform macro from VB and it works fine. It seems to only be a
problem
if I
run it from the toggle button in Excel.
I think it may be either the toggle buttons causing the problem or the
Worksheet_Activate macro. Could someone take a look?
Code for Toggle Button:
Private Sub ProtectionToggle_Click()
Application.ScreenUpdating = False
If wkshtInventoryHome.ProtectContents = True Then
With ProtectionToggle
.Caption = "Protect Sheets"
.Value = False
End With
Call RunProtectionPasswordUserForm
ElseIf wkshtInventoryHome.ProtectContents = False Then
Response = MsgBox("Are you sure you want to protect the
worksheet?" _
& vbLf & "This action cannot be undone without a password.",
vbOKCancel, _
"Confirm Protect Sheets")
If Response = vbOK Then
With ProtectionToggle
.Caption = "Begin Advanced Editing"
.Value = False
End With
End If
'after button is pressed:
Call WorkbookProtect
End If
Application.ScreenUpdating = True
End Sub
Worksheet Activate:
Private Sub Worksheet_Activate()
If wkshtLumberShores.ProtectContents = True Then
ProtectionToggle.Caption = "Begin Advanced Editing"
ElseIf wkshtLumberShores.ProtectContents = False Then
ProtectionToggle.Caption = "Protect Sheets"
End If
End Sub