Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Programming / October 2003

Tip: Looking for answers? Try searching our database.

Can I Toggle Display of Form Controls On and Off?

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Marcia - 23 Oct 2003 02:46 GMT
I need to create a template that will toggle the display of a
drop-down box on and off.   I want the drop-down box to become visible
if the user selects a checkbox and, likewise, I want the drop-down box
to remain hidden if the user does NOT select the checkbox.

I looked through the properties for a "Visible" code, but did not see
anything that would help me.  I am a very new beginner, however, and
may have overlooked it.

Any advice would be greatly appreciated.   I am using Word 2000.

Thanks!

Jessi
Doug Robbins - Word MVP - 23 Oct 2003 10:34 GMT
Hi Marcia,

The following would work as long as the display of hidden text is turned off
under Tools>Options>View

If ActiveDocument.FormFields("Check1").CheckBox.Value = True Then
   ActiveDocument.Unprotect
   ActiveDocument.FormFields("DropDown1").Range.Font.Hidden = False
   ActiveDocument.Protect wdAllowOnlyFormFields, NoREset
End If

Please post any further questions or followup to the newsgroups for the
benefit of others who may be interested.  Unsolicited questions forwarded
directly to me will only be answered on a paid consulting basis.

Hope this helps
Doug Robbins - Word MVP
> I need to create a template that will toggle the display of a
> drop-down box on and off.   I want the drop-down box to become visible
[quoted text clipped - 10 lines]
>
> Jessi
Marcia - 23 Oct 2003 23:20 GMT
Thanks so much!  This worked very well.  I also added an "Else" line
to disable and hide the control when the checkbox was NOT selected.

I have many, many checkboxes in this one file, however, and I was
trying to think of a way to pass this one macro to every checkbox
(instead of having a separate macro for each checkbox), but I can't
think of a way.   Is there a way to pass the name of the checkbox to a
variable (which would then be used in the macro)?

Thanks for your help!

Jessi
Doug Robbins - Word MVP - 24 Oct 2003 05:49 GMT
Hi Marcia,

You should be able to make use of the information in the article "How to
find the name of the current formfield" at:

http://www.mvps.org/word/FAQs/TblsFldsFms/GetCurFmFldName.htm
Signature

Please post any further questions or followup to the newsgroups for the
benefit of others who may be interested.  Unsolicited questions forwarded
directly to me will only be answered on a paid consulting basis.

Hope this helps
Doug Robbins - Word MVP

> Thanks so much!  This worked very well.  I also added an "Else" line
> to disable and hide the control when the checkbox was NOT selected.
[quoted text clipped - 8 lines]
>
> Jessi
Marcia - 28 Oct 2003 01:55 GMT
Thanks for your reply!  I have played with this for several days and
can't figure it out.

Here is my original code, based on checkbox and dropdown controls
which were named "Check1" and "DropDown1" respectively. (It works, but
I would have to recreate this macro many times, based on different
control names):

Sub ToggleFormField ()
   If ActiveDocument.FormFields("Check1").CheckBox.Value = True Then
       ActiveDocument.Unprotect
       With ActiveDocument.FormFields("Check1")
           .Range.Font.Hidden = False
           .Enabled = True
       End With
       ActiveDocument.Protect wdAllowOnlyFormFields, NoREset
   Else
       ActiveDocument.Unprotect
       With ActiveDocument.FormFields("Check1")
           .Range.Font.Hidden = True
           .Enabled = False
    End With
       ActiveDocument.Protect wdAllowOnlyFormFields, NoREset
   End If
End Sub

If, however, I add the following code in front of it, I can't get it
to work.  (I assumed that it was using a generic "Name," so I renamed
my  checkbox and dropdown controls to "Name," but I guess that I'm
totally missing the concept since it doesn't work.)

If Selection.FormFields.Count = 1 Then
    'No textbox but a check- or listbox
    MsgBox Selection.FormFields(1).Name
ElseIf Selection.FormFields.Count = 0 And Selection.Bookmarks.Count >
0 Then
    MsgBox Selection.Bookmarks(Selection.Bookmarks.Count).Name
End If

What am I missing?  Sorry to be so slow.

Jessi

> Hi Marcia,
>
[quoted text clipped - 14 lines]
> >
> > Jessi
Doug Robbins - Word MVP - 28 Oct 2003 13:24 GMT
Hi Marcia,

If you checkboxes and dropdowns have bookmark names Check1, Check2, Check3
etc. and DropDown1, DropDown2, DropDown3 etc., then you can use:

Dim i As Integer, CB As String, DD As String
i = Mid(Selection.FormFields(1).Name, 6)
CB = "Check" & i
DD = "DropDown" & i
ActiveDocument.Unprotect
If ActiveDocument.FormFields(CB).CheckBox.Value = True Then
   ActiveDocument.FormFields(DD).Range.Font.Hidden = False
Else
   ActiveDocument.FormFields(DD).Range.Font.Hidden = True
End If
ActiveDocument.Protect wdAllowOnlyFormFields, NoReset

in a macro that is run on exit from each checkbox.

Please post any further questions or followup to the newsgroups for the
benefit of others who may be interested.  Unsolicited questions forwarded
directly to me will only be answered on a paid consulting basis.

Hope this helps
Doug Robbins - Word MVP
> Thanks for your reply!  I have played with this for several days and
> can't figure it out.
[quoted text clipped - 57 lines]
> > >
> > > Jessi
Marcia - 29 Oct 2003 02:00 GMT
Hi, Doug.   Thanks so much for your help.   I added the code, but when
I test it, I get the following error message:

         Run-time Error 13 -- Type Mismatch

Do I need to change the datatype somewhere?   Here is what I have so
far:

Sub ToggleFormField()
'
Dim i As Integer, CB As String, DD As String
i = Mid(Selection.FormFields(1).Name, 6)
CB = "Check" & i
DD = "DropDown" & i
ActiveDocument.Unprotect
If ActiveDocument.FormFields(CB).CheckBox.Value = True Then
   With ActiveDocument.FormFields(DD)
       .Range.Font.Hidden = False
       .Enabled = True
   End With
Else
   With ActiveDocument.FormFields(DD)
       .Range.Font.Hidden = True
       .Enabled = False
   End With
End If
ActiveDocument.Protect wdAllowOnlyFormFields, NoReset

End Sub

Thanks!
Doug Robbins - Word MVP - 29 Oct 2003 10:18 GMT
Hi Marcia,

Are your formfields named the way that I mentioned?

What line of code is highlighted when you get the error message?

It worked for me.

Please post any further questions or followup to the newsgroups for the
benefit of others who may be interested.  Unsolicited questions forwarded
directly to me will only be answered on a paid consulting basis.

Hope this helps
Doug Robbins - Word MVP
> Hi, Doug.   Thanks so much for your help.   I added the code, but when
> I test it, I get the following error message:
[quoted text clipped - 27 lines]
>
> Thanks!
Marcia - 31 Oct 2003 04:40 GMT
Hi, Doug

Yes, the form fields are named "Check1, Check2, etc."  and the
dropdown fields are named "DropDown1, DropDown2, etc."

It seems to work just fine until I try to tab through a
previously-selected checkbox WITHOUT deselecting it... then, as I
continue tabbing through the dropdown field, it hangs up (as it exits
the dropdown field) and displays the error message.  But as long as I
deselect the checkbox first, it does fine.

Marcia

> Hi Marcia,
>
[quoted text clipped - 41 lines]
> >
> > Thanks!
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.