Passing reference to a checkbox to a subroutine.

M

MikeAllgood

I have an application where I am trying to enable/disable the controls in a
frame on a UserForm in VBA Office 2003. I have a checkbox in the frame and
when the checkbox is clicked, based on its value, I want to call one of two
subroutines. The subroutines have two arguments: the frame and the checkbox.
Whenever I try to run this code I get a type mismatch error. I know the
default property of the checkbox is the value property. Is it possible that
when I call the subs and reference the checkbox that it is trying to send a
boolean reference instead of a reference to the actual checkbox control? If
that is the case how do I get around this? If that isn't the problem, what
is, and how do I get it to work? The code is below. Thanks.

CheckBox clicked event:
Private Sub ckbTalentMod1_Click()
If ckbTalentMod1.Value = True Then
Call EnableObjects(fraTalentMod1, ckbTalentMod1)
Else
Call DisableObjects(fraTalentMod1, ckbTalentMod1)
End If
End Sub

Subroutine to enable the controls in the frame:
 
M

MikeAllgood

Sorry, I forgot to paste the subroutine. Here it is.

Public Sub EnableObjects(ByRef fraEnable As Frame, ByRef myCheckBox As
CheckBox)
Dim cCtl As Control

For Each cCtl In fraEnable.Controls
If cCtl.Name <> myCheckBox.Name And TypeName(cCtl) <> "Label" And
cCtl.Name <> "txtTalentMod1Total" Then
cCtl.enable = True
End If
Next cCtl
End Sub


Again, thanks.
 
B

Bob Phillips

Public Sub EnableObjects(ByRef fraEnable As Frame, ByRef myCheckBox As
msforms.CheckBox)
Dim cCtl As Control

For Each cCtl In fraEnable.Controls
If cCtl.Name <> myCheckBox.Name And _
TypeName(cCtl) <> "Label" And _
cCtl.Name <> "txtTalentMod1Total" Then
cCtl.enable = True
End If
Next cCtl
End Sub


--
---
HTH

Bob


(there's no email, no snail mail, but somewhere should be gmail in my addy)
 
M

MikeAllgood

Now what happens is the subroutine is getting called but when it get to the
line:

cCtl.enable = True

I get a "Object doesn't support this property or method" error (Error 438).
Why would a control object not have an enable property? What am I doing wrong?

Thanks,
Mike

Public Sub EnableObjects(ByRef fraEnable As Frame, ByRef myCheckBox As _
CheckBox)
Dim cCtl As Control

For Each cCtl In fraEnable.Controls
If cCtl.Name <> myCheckBox.Name And TypeName(cCtl) <> "Label" And _
cCtl.Name <> "txtTalentMod1Total" Then
cCtl.enable = True <---Error happens here!
End If
Next cCtl
End Sub
 
T

Tim Zych

Enabled, not Enable

--
Tim Zych
SF, CA

MikeAllgood said:
Now what happens is the subroutine is getting called but when it get to
the
line:

cCtl.enable = True

I get a "Object doesn't support this property or method" error (Error
438).
Why would a control object not have an enable property? What am I doing
wrong?

Thanks,
Mike

Public Sub EnableObjects(ByRef fraEnable As Frame, ByRef myCheckBox As _
CheckBox)
Dim cCtl As Control

For Each cCtl In fraEnable.Controls
If cCtl.Name <> myCheckBox.Name And TypeName(cCtl) <> "Label" And _
cCtl.Name <> "txtTalentMod1Total" Then
cCtl.enable = True <---Error happens here!
End If
Next cCtl
End Sub
 

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