View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
Tom Ogilvy Tom Ogilvy is offline
external usenet poster
 
Posts: 27,285
Default toggle button or worksheet_activate causing form to open twice

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