|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
转自:https://www.cnblogs.com/Alex80/p/4759289.html
Selection 对象
代表窗口或窗格中的当前所选内容。所选内容代表文档中选定(或突出显示)的区域,如果文档中没有选定任何内容,则代表插入点。每个文档窗格只能有一个 Selection 对象,并且在整个应用程序中只能有一个活动的 Selection 对象。
说明
可以使用 Selection 属性返回 Selection 对象。如果 Selection 属性未使用对象限定符,则 Microsoft Office 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"
可以使用 Flags、Information 和 Type 等属性返回有关当前所选内容的信息。您可以在某个过程中使用以下示例来确定活动文档中是否选择了内容,如果未选择,则跳过该过程的其余部分。
If Selection.Type = wdSelectionIP Then
MsgBox Prompt:="You have not 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 对象来处理文档。有关 Selection 对象和 Range 对象的详细信息,请参阅处理 Selection 对象和处理 Range 对象。
处理 Selection 对象
用 Microsoft Office Word 处理文档时,通常先选定文字,然后对所选内容执行操作,例如设置文字格式或键入文字。在 Microsoft Visual Basic 中,通常不需要在修改文字前先选定文字,而是创建一个引用文档中特定区域的 Range 对象。有关定义 Range 对象的信息,请参阅处理 Range 对象。但是,如果希望代码响应或更改所选内容,则可使用 Selection 对象。
如果尚未选定文本,可使用 Select 方法选择与特定对象关联的文本并创建一个 Selection 对象。例如,下面的指令选定活动文档中的第一个单词。
Sub SelectFirstWord()
ActiveDocument.Words(1).Select
End Sub
有关详细信息,请参阅在文档中选定文字。
如果已经选定文本,可使用 Selection 属性返回一个 Selection 对象,该对象表示文档中当前选定的内容。每个文档只能有一个 Selection 对象,该对象始终访问当前选定内容。下面的示例更改当前选定内容中段落的格式。
Sub FormatSelection()
Selection.Paragraphs.LeftIndent = InchesToPoints(0.5)
End Sub
本示例在当前选定内容后插入单词“Hello”。
Sub InsertTextAfterSelection()
Selection.InsertAfter Text:="Hello "
End Sub
本示例对选定文本应用加粗格式。
Sub BoldSelectedText()
Selection.Font.Bold = True
End Sub
宏录制器经常会创建使用 Selection 对象的宏。下面的示例是使用宏录制器创建的。该宏选择活动文档中的前两个单词并对其应用加粗格式。
Sub Macro()
Selection.HomeKey Unit:=wdStory
Selection.MoveRight Unit:=wdWord, Count:=2, Extend:=wdExtend
Selection.Font.Bold = wdToggle
End Sub
下面的示例完成相同的任务,但不选择文本,也不使用 Selection 对象。
Sub WorkingWithRanges()
ActiveDocument.Range(Start:=0, _
End:=ActiveDocument.Words(2).End).Bold = True
End Sub |
|