Disable all Control Events on a Userform when it is Intialized

R

RyanH

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
 
P

Peter T

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top