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" <(E-Mail Removed)> wrote in message
news:EDC164C7-F04E-42FC-8248-(E-Mail Removed)...
>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
|