I have a document in which users can insert pictures and then give them a caption number. However, the quantity of these is chosen by the user - there can be 20, 30 and so on. Any quantity depending on the subject matter.
As the procedure is working with fields this is the line of code to start it off:
For Each oFld In ActiveDocument.Fields
It progresses through the code until it reaches:
As it does not know how many pictures have been inserted it returns back to the top and starts repeating the procedure going into an indefinite loop.
I've researched the While...Wend; Do..Loop and so on but the big "gotcha" is that it cannot tell how many items it is looking at and then finally break out and exit the Sub.
As I said, each of the pictures will have a caption starting at 1 and progressing through for each graphic. This numbering of the caption is based on a SEQ field incrementing by 1 each time.
The whole macro is listed below and it was provided in an earlier post on this forum. Many, many thanks to Graham Mayor and Greg Maxey for setting out the procedures. They work as designed.
Sub ReplaceFieldsV6()
'Graham Mayor - http://www.gmayor.com - Last updated - 25 Sep 2018
Dim oFld As Field, oNewFld As Field
Dim oRng As Range, oSeq As Range
For Each oFld In ActiveDocument.Fields
If oFld.Type = wdFieldSequence Then
If InStr(1, oFld.Code, "Figure") > 0 Then
oFld.Code.Text = Replace(oFld.Code.Text, oFld.Code.Text, "SEQ Figure \* ARABIC \s \* MERGEFORMAT")
oFld.Update
Set oRng = oFld.Code
oRng.MoveStart wdCharacter, -1
oRng.Collapse 1
oRng.Text = "-"
oRng.Collapse 1
Set oNewFld = ActiveDocument.Fields.Add(Range:=oRng, _
Type:=wdFieldStyleRef, _
Text:="""GA Numbered Heading 1""" & " \s", _
PreserveFormatting:=False)
oNewFld.Update
End If
End If
Next oFld
lbl_Exit:
Set oFld = Nothing
Set oNewFld = Nothing
Set oRng = Nothing
Exit Sub
End Sub
Now I've got to stop the continous loop.
Could someone show me how this can be done, please?