Share via


How to: Programmatically Collapse Ranges or Selections in Documents

If you are working with a Range or Selection object, you might want to change the selection to an insertion point before inserting text, to avoid overwriting existing text. Both the Range and Selection objects have a Collapse method, which makes use of the WdCollapseDirection enumeration values:

  • wdCollapseStart collapses the selection to the beginning of the selection. This is the default if you do not specify an enumeration value.

  • wdCollapseEnd collapses the selection to the end of the selection.

Applies to: The information in this topic applies to document-level projects and application-level projects for Word 2013 and Word 2010. For more information, see Features Available by Office Application and Project Type.

To collapse a range and insert new text

  1. Create a Range object that consists of the first paragraph in the document.

    The following code example can be used in a document-level customization.

    Dim rng As Word.Range = Me.Paragraphs(1).Range
    
    Word.Range rng = this.Paragraphs[1].Range; 
    

    The following code example can be used in an application-level add-in. This code uses the active document.

    Dim rng As Word.Range = Me.Application.ActiveDocument.Paragraphs(1).Range
    
    Word.Range rng = this.Application.ActiveDocument.Paragraphs[1].Range;
    
  2. Use the wdCollapseStart enumeration value to collapse the range.

    rng.Collapse(Word.WdCollapseDirection.wdCollapseStart)
    
    rng.Collapse(Word.WdCollapseDirection.wdCollapseStart); 
    
  3. Insert the new text.

    rng.Text = " New Text "
    
    rng.Text = " New Text ";
    
  4. Select the Range.

    rng.Select()
    
    rng.Select();
    

If you use the wdCollapseEnd enumeration value, the text is inserted at the beginning of the following paragraph.

rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd);

You might expect that inserting a new sentence would insert it before the paragraph marker, but that is not the case because the original range includes the paragraph marker. For more information, see How to: Programmatically Exclude Paragraph Marks When Creating Ranges.

Document-Level Customization Example

To collapse a range in a document-level customization

  • The following example shows the complete method for a document-level customization. To use this code, run it from the ThisDocument class in your project.

    Dim rng As Word.Range = Me.Paragraphs(1).Range
    
    rng.Collapse(Word.WdCollapseDirection.wdCollapseStart)
    
    rng.Text = " New Text "
    rng.Select()
    
    Word.Range rng = this.Paragraphs[1].Range; 
    
    rng.Collapse(Word.WdCollapseDirection.wdCollapseStart); 
    
    rng.Text = " New Text ";
    rng.Select();
    

Application-Level Add-in Example

To collapse a range in an application-level add-in

  • The following example shows the complete method for an application-level add-in. To use this code, run it from the ThisAddIn class in your project.

    Dim rng As Word.Range = Me.Application.ActiveDocument.Paragraphs(1).Range
    
    rng.Collapse(Word.WdCollapseDirection.wdCollapseStart)
    
    rng.Text = " New Text "
    rng.Select()
    
    Word.Range rng = this.Application.ActiveDocument.Paragraphs[1].Range;
    
    rng.Collapse(Word.WdCollapseDirection.wdCollapseStart);
    
    rng.Text = " New Text ";
    rng.Select();
    

See Also

Tasks

How to: Programmatically Insert Text into Word Documents

How to: Programmatically Define and Select Ranges in Documents

How to: Programmatically Retrieve Start and End Characters in Ranges

How to: Programmatically Exclude Paragraph Marks When Creating Ranges

How to: Programmatically Extend Ranges in Documents

How to: Programmatically Reset Ranges in Word Documents