Selection 对象

         
多种对象
Selection

多种对象

该对象代表窗口或窗格中的当前所选内容。所选内容代表文档中被选定(或突出显示的)的区域,若文档中没有所选内容,则代表插入点。每个文档窗格只能有一个活动的 Selection 对象,并且整个应用程序中只能有一个活动的 Selection 对象。

使用 Selection 对象

使用 Selection 属性可返回 Selection 对象。如果没有使用 Selection 属性的对象识别符,Word 将返回活动文档窗口的活动窗格中的所选内容。下列示例从活动文档复制当前所选内容。

Selection.Copy

下列示例剪切 Documents 集合中第三个文档的所选内容。访问文档的当前所选内容时,文档无需处于活动状态。

Documents(3).ActiveWindow.Selection.Cut

下列示例复制活动文档的第一个窗格的所选内容,并将其粘添到第二个窗格中。

ActiveDocument.ActiveWindow.Panes(1).Selection.Copy
ActiveDocument.ActiveWindow.Panes(2).Selection.Paste

Text 属性是 Selection 对象的默认属性。使用该属性可在当前所选内容中设置或返回文本。下列示例将当前所选内容的文本赋值给变量 strTemp,如果该变量是一个段落标记,则删除其最后一个字符。

Dim strTemp as String

strTemp = Selection.Text
If Right(strTemp, 1) = vbCr Then _
    strTemp = Left(strTemp, Len(strTemp) - 1)

Selection 对象有多种方法和属性,可用于折叠、扩展或以其他方式更改当前所选的内容。下列示例将插入点移动到到文档末尾并选择最后三行内容。

Selection.EndOf Unit:=wdStory, Extend:=wdMove
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
Selection.MoveUp Unit:=wdLine, Count:=2, Extend:=wdExtend

Selection 对象有多种方法和属性,可用于编辑文档中的所选内容。下列示例选择活动文档中的第一句,并用新的段落替换该句。

Options.ReplaceSelection = True
ActiveDocument.Sentences(1).Select
Selection.TypeText "Material below is confidential."
Selection.TypeParagraph

下列示例剪切 Documents 集合中第一篇文档的最后一段,并将其粘添到第二篇文档的开头。

With Documents(1)
    .Paragraphs.Last.Range.Select
    .ActiveWindow.Selection.Cut
End With

With Documents(2).ActiveWindow.Selection
    .StartOf Unit:=wdStory, Extend:=wdMove
    .Paste
End With

Selection 对象有多种方法和属性,可用于更改当前所选内容的格式。下列示例将当前所选内容的字体从 Times New Roman 更改为 Tahoma。

If Selection.Font.Name = "Times New Roman" Then _
    Selection.Font.Name = "Tahoma"

使用诸如 FlagsInformationType 属性可返回当前所选内容的信息。您可以在过程中使用下列示例来确定活动文档中是否的确有选定的内容;如果没有,将略过该过程的其余部分。

If Selection.Type = wdSelectionIP Then
    MsgBox Prompt:="You haven't selected any text! Exiting procedure..."
    Exit Sub
End If

说明

即使将所选内容折叠为插入点,该对象也不一定为空。例如,Text 属性仍将返回至插入点右侧的字符;该字符也将在 Selection 对象的 Characters 集合中显示。但是,来自折叠的所选内容的诸如 Cut Copy 等调用方法将导致出错。

用户可以选定代表不连续文本的文档区域(例如,使用鼠标和 Alt 键)。由于该行为不可预知,您可能希望在代码中包含一个步骤,用于在对所选内容的 Type 属性进行任何操作前对其进行检查(Selection.Type = wdSelectionBlock)。类似地,包含表格单元格的所选内容也会导致不可预知的行为。Information 属性将告知您所选内容是否在表格中。(Selection.Information(wdWithinTable) = True)。下列示例确定所选内容是否正常(换言之,它不是表格中的一行或一列,不是文本中的一竖排区,等等);您可以在执行任何操作前用它测试当前所选内容。

If Selection.Type <> wdSelectionNormal Then
    MsgBox Prompt:="Not a valid selection! Exiting procedure..."
    Exit Sub
End If

由于 Range 对象与 Selection 对象共享许多相同的方法和属性,当没有必要修改当前所选内容时,推荐使用 Range 对象修改文档。有关 SelectionRange 对象的详细信息,请参阅处理 Selection 对象处理 Range 对象