View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Bob Phillips[_6_] Bob Phillips[_6_] is offline
external usenet poster
 
Posts: 11,272
Default toggle button or worksheet_activate causing form to open twice

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