Solved

Find-VBA Operation falling into an endless loop in tables

Posted on 2009-07-12
4
390 Views
Last Modified: 2012-06-27
Dear Experts:

below macro counts the number of occurrences of bold formatting in a document. It is running fine on documents WITHOUT tables. As soon as there is a BOLD FORMATTED WORD within a TABLE, the macro falls into an endless loop.

How do I have to change the code to include also tables?

Help is much appreciated. Thank you very much in advance.

Regards, Andreas
Sub CountNumber_FindOperation
 

Dim rngStory As range

Dim i As Long
 

Set rngStory = ActiveDocument.StoryRanges(wdMainTextStory)

    With rngStory.Find

      .Font.Bold = True

      While .Execute

        i = i + 1

      Wend

    End With

If i > 0 Then

  MsgBox "Occurrences of bold formatting found " & i & " time(s)."

Else

  MsgBox "No bold formatting found", vbOKOnly, "No bold formatting!"

  End If

End Sub

Open in new window

0
Comment
Question by:AndreasHermle
  • 2
  • 2
4 Comments
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 24833937
do not use the with with the .execute.
syntax: ok
side-effect: endless loop.

I had th esame problem once also ...

Sub CountNumber_FindOperation
 
Dim rngStory As range
Dim i As Long
 
Set rngStory = ActiveDocument.StoryRanges(wdMainTextStory)
rngStory.Find.Font.Bold = True
While rngStory.Find.Execute
  i = i + 1
Wend 
If i > 0 Then
  MsgBox "Occurrences of bold formatting found " & i & " time(s)."
Else
  MsgBox "No bold formatting found", vbOKOnly, "No bold formatting!"
  End If
End Sub

Open in new window

0
 

Author Comment

by:AndreasHermle
ID: 24834034
Hi angelIII,
thank you very much for your quick answer. I just tried out your code. I am afraid to tell you that the macro still falls into an endless loop as soon as it hits bold formatted words in a table.

Any idea why?

Help is much appreciated. Thank you very much in advance. Regards, Andreas
0
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 24834047
sorry...
you have to check the Found property also
Sub CountNumber_FindOperation

 

Dim rngStory As range

Dim i As Long

 

Set rngStory = ActiveDocument.StoryRanges(wdMainTextStory)

rngStory.Find.Font.Bold = True

rngStory.Find.Execute

While rngStory.Find.Found

  i = i + 1

  rngStory.Find.Execute

Wend 

If i > 0 Then

  MsgBox "Occurrences of bold formatting found " & i & " time(s)."

Else

  MsgBox "No bold formatting found", vbOKOnly, "No bold formatting!"

  End If

End Sub

Open in new window

0
 

Accepted Solution

by:
AndreasHermle earned 0 total points
ID: 24834114
Hi angelIII,

I am afraid to tell you that the macro still falls into an endless loop. Maybe I got a corrupt document but I tried it out on several documents.
Anyhow, in the meantime I found  out thru an internet query that this bug seems to be caused by 'end-of-cell-markers' in the matched text. It is recommended to move the range. I did exactly this, i.e. I just added 'rng.move, 1'. And now it works!

Anyhow, thank you very much for your kind and terrific help.

Regards, Andreas


Set rngStory = ActiveDocument.StoryRanges(wdMainTextStory)

rngStory.Find.Font.Bold = True

While rngStory.Find.Execute

  i = i + 1

  rngStory.Move , 1 ' Added by Andreas Hermle

Wend

If i > 0 Then

  MsgBox "Occurrences of bold formatting found " & i & " time(s)."

Else

  MsgBox "No bold formatting found", vbOKOnly, "No bold formatting!"

  End If

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Like many others, we try and discourage users from printing documents unnecessarily and instead send or share them electronically. However, this doesn't always work and documents are still printed. With this simple solution, if the user tries to …
Using Word 2013, I was experiencing some incredible lag when typing.  Here's what worked for me....
This video walks the viewer through the process of creating a watermark for their document, customizing it, and saving it for viewing/printing needs.
This video walks the viewer through the process of creating envelopes and labels, with multiple names and addresses. Navigate to the “Start Mail Merge” button in the Mailings tab: Follow the step-by-step process until asked to find the address doc…

932 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now