Disable all Control Events on a Userform when it is Intialized
app.EnableEvents does not affect userform control events.
You could set a module level flag and in the first line in each control
event something like this -
If mbDisable the Exit Sub
You could toggle the Enabled property of controls with something like this -
Sub EnableControls(bEnable as boolean)
dim ctr as object
for each ctr in me.controls
if typename(ctr) = blah
' or perhaps
if left$(ctr.name, 5) = "Check" then
ctr.enabled = bEnable
end if
next
if you've got the relevant controls in some logical index order (index order
is the order in which controls were added to the form at design time, it
won't change)
For i = 5 to 10
me.controls(i).enabled = bEnable
next
Regards,
Peter T
"RyanH" wrote in message
...
I have a Userform with 17 Checkboxes. Each checkbox has a Click Event that
calls another procedure to calculate values to be displayed in Textboxes
on
the Userform depending if the checkbox is true or false. The checkbox
value
is determined by values on a particular row in a worksheet. When the
userform is initialized it runs this calculation 17 different times. Is
there
a way to disable the events while the form intializes and then when all
values are deterimined in the Userform, then run the Click events?
Currently
it is not slow, I was just wondering if it would be faster.
Here is a shortened version of my code. I tried doing this but when I
stepped thru the code it still fires the events.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
With Userform
Checkbox1 = Cells(ActiveCell.Row, "A")
' then Checkbox1_Click Event Fires
Checkbox2 = Cells(ActiveCell.Row, "A")
' then Checkbox2_Click Event Fires
End With
Application.EnableEvents = True
Userform.Show
End Sub
Private Sub UserForm_Initialize()
' load list boxes and other stuff
Application.EnableEvents = False
End Sub
--
Cheers,
Ryan
|