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 / March 2008

Tip: Looking for answers? Try searching our database.

Incredibly frustrated with Macro

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Kim K - 26 Feb 2008 19:28 GMT
I have a macro that I am using that works like this, drop down selection has
5 choices, if choice 2 or 3 is selected then a message will pop up stating
that the next field needs further clarification and to please fill in, in
otherwards it will not allow the user to go past the next field if choice 2
or 3 is not clarified.

I can set up my document and get this in and test it - works fine.  I then
build from there, adding header, footer, tables, check boxes, popup calendar
macro, list box macros, specify continuous breaks and protections, then test

All macros work except the choice 2-3 macro.  It allows for bypass and does
not show pop up message.

What am I doing wrong?

This is word 07 saved in dot format for use on re is macro code I am using:

Option Explicit
Public mstrFF As String
Public Sub AOnExit()
Dim oDoc As Word.Document
Set oDoc = ActiveDocument
With GetCurrentFF
 Select Case .Name
   Case Is = "SchoolType"
     Select Case .Result
       Case Is = "Other District School", "Private School/Home Schooled"
         ActiveDocument.FormFields("MyText").Enabled = True
         ActiveDocument.Bookmarks("MyText").Range.Fields(1).Result.Select
       Case Else
         ActiveDocument.FormFields("MyText").Result = ""
         ActiveDocument.FormFields("MyText").Enabled = False
         ActiveDocument.Bookmarks("MyText2").Range.Fields(1).Result.Select
     End Select
   Case Is = "MyText"
     If Len(.Result) < 1 Then
       mstrFF = .Name
     End If
 End Select
End With
End Sub
Public Sub AOnEntry()
Dim strCurrentFF As String
If LenB(mstrFF) > 0 Then
 DoEvents
 MsgBox "Please list Other District School or Private School/Home Schooled"
 ActiveDocument.Bookmarks(mstrFF).Range.Fields(1).Result.Select
 mstrFF = vbNullString
End If
End Sub
Public Function GetCurrentFF() As Word.FormField
With Selection
 If .FormFields.Count = 1 Then
   Set GetCurrentFF = .FormFields(1)
 ElseIf .FormFields.Count = 0 And .Bookmarks.Count > 0 Then
    Set GetCurrentFF = ActiveDocument.FormFields _
    (.Bookmarks(.Bookmarks.Count).Name)
 End If
End With
End Function

Signature

Thanks,,
Kim

Jean-Guy Marcil - 03 Mar 2008 15:02 GMT
> I have a macro that I am using that works like this, drop down selection has
> 5 choices, if choice 2 or 3 is selected then a message will pop up stating
[quoted text clipped - 10 lines]
>
> What am I doing wrong?

There could be many things going on...
First, to make sure that the macro is indeed activated when you exit the
dropdown, temporarily add a Stop command at the top of the code:

  Public Sub AOnExit()
  Dim oDoc As Word.Document
 
  Stop
 
  Set oDoc = ActiveDocument
  With GetCurrentFF

Then reprotect your document and try to leave the dropdown. The compiler
should stop on the Stop line if the macro is activated. From there, use F8 to
step through the code one step at the time and see what is going on (or not
going on, as the case maybe...!)

If the compiler does not take you in debugging mode to the Stop line, then
it means that the code is not activated when you leave your dropdown
formfield. Re-check its properties or the security level in Word...

By the way, I see in your code:

  Dim oDoc As Word.Document
  Set oDoc = ActiveDocument

But I do not see the oDoc object being used anywhere... So why bother
creating an object if you are not going to use it? If you created it, then
you may want to use it in those lines, for example:

         ActiveDocument.FormFields("MyText").Enabled = True
         ActiveDocument.Bookmarks("MyText").Range.Fields(1).Result.Select

could be

  With oDoc.FormFields("MyText")
     .Enabled = True
     .Range.Fields(1).Result.Select
  End With

and
         ActiveDocument.FormFields("MyText").Result = ""
         ActiveDocument.FormFields("MyText").Enabled = False
         ActiveDocument.Bookmarks("MyText2").Range.Fields(1).Result.Select

could be

  With oDoc.FormFields
     With .Item("MyText")
        .Result = ""
        .Enabled = False
     End With
     .Item("MyText2").Range.Fields(1).Result.Select
  End With
fumei - 03 Mar 2008 23:54 GMT
"So why bother creating an object if you are not going to use it? "

Indeed.

You could go even further and make a formfield object of the collection.

Dim DocFF As FormFields
Set DocFF = ActiveDocument.FormFields

  With DocFF("MyText")
     .Enabled = True
     .Range.Fields(1).Result.Select
  End With

Or even more specifically/explicitly

Dim DocFF As FormFields
Dim oFF As FormField   ' notice singular NOT plural

Set DocFF = ActiveDocument.FormFields
Set oFF = DocFF("MyText")

  With oFF
     .Enabled = True
     .Range.Fields(1).Result.Select
  End With

>> I have a macro that I am using that works like this, drop down selection has
>> 5 choices, if choice 2 or 3 is selected then a message will pop up stating
[quoted text clipped - 56 lines]
>      .Item("MyText2").Range.Fields(1).Result.Select
>   End With

Rate this thread:






 
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.