You haven't indicated whether you are expecting the seq field to be on the Next paragraph or the Next.Next paragraph when your code runs into the style separator. You will have to do some testing to debug the code and deal with situations like that. Try this variation and step through the code to see what is being tested for the presence of the Seq field. The Select statements don't need to be in the code but they help you see what the macro is working on.
Code:
Sub CheckAllFigures()
Dim iShape As InlineShape, myBigRange As Range, rngCaption As Range
Application.ScreenUpdating = False
On Error GoTo ErrorHandler
Set myBigRange = ActiveDocument.Range
For Each iShape In myBigRange.InlineShapes 'Process figures within the entire document
'Look at para below the figure. Caption there? If not, add one.
Set rngCaption = iShape.Range.Paragraphs(1).Next.Range
rngCaption.Select 'this will help you debug the range being considered for the presence of the caption
If rngCaption.Fields.Count = 0 Then
If rngCaption.Characters.Last.Font.Hidden = True Then 'has a style separator
Set rngCaption = rngCaption.Paragraphs.Last.Next.Range
rngCaption.Select
Debug.Print "What now"
Else
iShape.Range.InsertCaption Label:="Figure", Title:=". ", Position:=wdCaptionPositionBelow, ExcludeLabel:=False
End If
ElseIf rngCaption.Fields(1).Type <> wdFieldSequence Then
iShape.Range.InsertCaption Label:="Figure", Title:=". ", Position:=wdCaptionPositionBelow, ExcludeLabel:=False
End If
Next iShape 'Go to next shape
Set rngCaption = Nothing
Set myBigRange = Nothing
Application.ScreenUpdating = True
Application.ScreenRefresh
MsgBox "Done!", vbInformation
Exit Sub 'If you get this far - avoid the error handler
ErrorHandler:
MsgBox "Error: " & Err.Number & vbCr & Err.Description
End Sub