Hi Paul,
thank you for your code. It looks very good and has similarities to the way I have finally chosen (we worked in parallel): My data are identified by a prefix "D#", so
- in a first loop I determine the maximum ID that is available in the document,
- then those data that do not yet have an ID are assigned with one in Loop 2
Thanks for the feedback,
Fred
Here my approach:
Code:
Sub AddDataID()
NumberOfData = 0
DataMaxID = 0
AllDataHaveID = True
With Selection 'Look for D# in the document and determine the maximum ID that was already assigned
.HomeKey Unit:=wdStory
With .Find
.Text = "D#??????"
.Forward = True
.MatchWildcards = True
End With
Do While .Find.Execute 'Loop 1: Determine the maximum ID
NumberOfData = NumberOfData + 1
FirstSpace = InStr(1, Selection, " ") 'Per definition there is a " " after the ID
DataNumberFound = Val(Mid(Selection, 3, FirstSpace - 3))
If DataNumberFound = 0 Then AllDataHaveID = False 'Not all requirements have an ID yet
If DataNumberFound > DataMaxID Then DataMaxID = DataNumberFound
Loop
End With
'Then loop 2 to assign those data that do not have an ID yet an ID starting from DataMaxID
End Sub