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 / Mailmerge and Fax / January 2004

Tip: Looking for answers? Try searching our database.

Reselect a FormField following edit

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Tait Milliken - 06 Jan 2004 19:16 GMT
I have a Word 2000 document with several FormFields. These
fields will ultimately be used to populate an Access
database after several documents have been created from
the template. Since the loading of the Access db takes
place separately, I need to perform as much editing as
possible within the Word document. I have written several
macros that are invoked on exit from most FormFields where
editing is needed. My problem is that I cannot get the
FormField that had the error to be reselected. Consider
the following code:

Sub Validate_ITLExtension()
'
' This macro ensures that the ITL telphone extension is
five digits long with
' a leading "3"
'
Dim szExtension As String

 szExtension = ActiveDocument.FormFields
("txtITLExt").Result
 If Not (Len(szExtension) = 5 And Mid$(szExtension, 1, 1)
= "3") Then
   MsgBox "Extensions must be five digits including a
leading ""3""", vbOKOnly And vbExclamation, "Telephone
Extension Error"
   ActiveDocument.FormFields("txtITLExt").Result = ""
   ActiveDocument.Bookmarks("txtITLExt").Select
 End If

End Sub

The errors are properly trapped but the .select is
apparently ignored and the next FormField is activated.

I have tried using

Selection.GoTo What:=wdGoToBookmark, Name="txtITLExt"

but it doesn't work either.

Suggestions?
Peter Jamieson - 06 Jan 2004 23:45 GMT
I expect there's a correct way to do this but something that may work is to
store the form field number in the exit macro if you want to go back to it,
then ensure each entry macro checks for a non-zero number and selects the
appropriate field, e.g. with two formfields:

Private FormFieldNumber As Long
Sub ExitMacro1()
With ActiveDocument
If .FormFields(1).Result = "abc" Then
 .FormFields(1).Result = ""
 FormFieldNumber = 1
Else
 FormFieldNumber = 0
End If
End With
End Sub

Sub b()
With ActiveDocument
If .FormFields(2).Result = "abc" Then
 .FormFields(2).Result = ""
 FormFieldNumber = 2
Else
 FormFieldNumber = 0
End If
End With
End Sub

Sub e()
Dim TempFormFieldNumber As Long
If FormFieldNumber <> 0 Then
' can probably just put the FormFieldNumber = 0 after the .Select but it
' feels better this way
 TempFormFieldNumber = FormFieldNumber
 FormFieldNumber = 0
 ActiveDocument.FormFields(TempFormFieldNumber).Select
End If
End Sub

Untested, but maybe worth a try.
--
Peter Jamieson - Word MVP
Word MVP web site http://www.mvps.org/word

> I have a Word 2000 document with several FormFields. These
> fields will ultimately be used to populate an Access
[quoted text clipped - 38 lines]
>
> Suggestions?
Cindy M  -WordMVP- - 07 Jan 2004 11:12 GMT
Hi Peter,

> I expect there's a correct way to do this but something that may work is to
> store the form field number in the exit macro if you want to go back to it,
> then ensure each entry macro checks for a non-zero number and selects the
> appropriate field, e.g. with two formfields:

This is also my preference, except I store the actual form field name - on
ENTERING the field. And the Exit macro performs the validation on the field
its exiting.

I believe there's also an article on this on the mvps.org/word website.

Cindy Meister
INTER-Solutions, Switzerland
http://homepage.swissonline.ch/cindymeister (last update Sep 30 2003)
http://www.mvps.org/word

This reply is posted in the Newsgroup; please post any follow question or
reply in the newsgroup and not by e-mail :-)
Tait Milliken - 07 Jan 2004 13:58 GMT
Thank you, Peter and Cindy:

Your recommended solution works exactly as desired.

I will next generalize the edits to cut down on the number
of subsoutines. Your suggestions point the way. Thanks

>-----Original Message-----
>I expect there's a correct way to do this but something that may work is to
[quoted text clipped - 85 lines]
>
>.
 
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.