Determine the index number of the current paragraph, table, section...
Or of any object that has a Range property
Article contributed by
Dave Rado,
with acknowledgments to Andrew Gabb,
Jonathan West
and
Ibby
Note that none of the following applies reliably if you are in Outline View; if you are, you need to change to some other view, such as Normal view, first.
1. |
In order to operate on the currently selected paragraph, table, section, etc.The first questions is – why do you need to know the index number? If you want to know in order to operate on the currently selected paragraph, table or other object, you can simply use: Selection.CollectionName(1) For example: Selection.Paragraphs(1).Range.Font.Bold = True Selection.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text = "Hello" Selection.Tables(1).Borders.Enable = False All the above operate on the currently selected object. Similarly, if you were working with a range variable, you could use: MyRange.Paragraphs(1).Range.Font.Bold = True Etc. However if you really do need to know the index number, use the following method:
|
2. |
Get the index number, by setting a range to the start of the documentThe fastest and simplest way to get the index number, by far, is to set a range from the start of the document to the end of the first selected paragraph (or other object); and then use the Count property, as follows: MsgBox ActiveDocument.Range(0, Selection.Paragraphs(1).Range.End).Paragraphs.Count MsgBox ActiveDocument.Range(0, Selection.Sections(1).Range.End).Sections.Count MsgBox ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count Again, you could also use this method to get the index number of a range rather than of a selection, as follows: MsgBox ActiveDocument.Range(0, MyRange.Paragraphs(1).Range.End).Paragraphs.Count Etc. This method was suggested in the newsgroups by Andrew Gabb. |