Объект Selection (Word)
Представляет текущий выделенный фрагмент в окне или области. Выделенный фрагмент представляет выбранную (или выделенную) область в документе или представляет точку вставки, если в документе ничего не выбрано. В области окна документа может быть только один объект Selection, а в приложении только один объект Selection может быть активным.
Важно!
Этот метод изменился. При использовании команд выделения VBA, таких как Selection.BoldRun
, для выделения пользователей с примечаниями больше не применяется полужирное форматирование для текста, выделенного пользователем, или для команды Selection.TypeTxt
; также при выделении пользователей с примечаниями больше не вставляется текст.
Используйте свойство Selection, чтобы возвратить объект Selection. Если для свойства Selection не используется квалификатор объекта, Microsoft 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 будет по-прежнему возвращать символ справа от точки вставки; этот символ также отображается в коллекции Characters объекта Selection. Однако вызов методов, таких как 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.
- BoldRun
- Calculate
- ClearCharacterAllFormatting
- ClearCharacterDirectFormatting
- ClearCharacterStyle
- ClearFormatting
- ClearParagraphAllFormatting
- ClearParagraphDirectFormatting
- ClearParagraphStyle
- Collapse
- ConvertToTable
- Copy
- CopyAsPicture
- CopyFormat
- CreateAutoTextEntry
- CreateTextbox
- Cut
- Delete
- DetectLanguage
- EndKey
- EndOf
- EscapeKey
- Expand
- ExportAsFixedFormat
- ExportAsFixedFormat2
- Extend
- GoTo
- GoToEditableRange
- GoToNext
- GoToPrevious
- HomeKey
- InRange
- InsertAfter
- InsertBefore
- InsertBreak
- InsertCaption
- InsertCells
- InsertColumns
- InsertColumnsRight
- InsertCrossReference
- InsertDateTime
- InsertFile
- InsertFormula
- InsertNewPage
- InsertParagraph
- InsertParagraphAfter
- InsertParagraphBefore
- InsertRows
- InsertRowsAbove
- InsertRowsBelow
- InsertStyleSeparator
- InsertSymbol
- InsertXML
- InStory
- IsEqual
- ItalicRun
- LtrPara
- LtrRun
- Move
- MoveDown
- MoveEnd
- MoveEndUntil
- MoveEndWhile
- MoveLeft
- MoveRight
- MoveStart
- MoveStartUntil
- MoveStartWhile
- MoveUntil
- MoveUp
- MoveWhile
- Next
- NextField
- NextRevision
- NextSubdocument
- Paste
- PasteAndFormat
- PasteAppendTable
- PasteAsNestedTable
- PasteExcelTable
- PasteFormat
- PasteSpecial
- Previous
- PreviousField
- PreviousRevision
- PreviousSubdocument
- ReadingModeGrowFont
- ReadingModeShrinkFont
- RtlPara
- RtlRun
- Select
- SelectCell
- SelectColumn
- SelectCurrentAlignment
- SelectCurrentColor
- SelectCurrentFont
- SelectCurrentIndent
- SelectCurrentSpacing
- SelectCurrentTabs
- SelectRow
- SetRange
- Shrink
- ShrinkDiscontiguousSelection
- Sort
- SortAscending
- SortByHeadings
- SortDescending
- SplitTable
- StartOf
- ToggleCharacterCode
- TypeBackspace
- TypeParagraph
- TypeText
- WholeStory
- Active
- Application
- BookmarkID
- Bookmarks
- Borders
- Cells
- Characters
- ChildShapeRange
- Columns
- ColumnSelectMode
- Comments
- Creator
- Document
- Editors
- End
- EndnoteOptions
- Endnotes
- EnhMetaFileBits
- ExtendMode
- Fields
- Find
- FitTextWidth
- Flags
- Font
- FootnoteOptions
- Footnotes
- FormattedText
- FormFields
- Frames
- HasChildShapeRange
- HeaderFooter
- HTMLDivisions
- Hyperlinks
- Information
- InlineShapes
- IPAtEndOfLine
- IsEndOfRowMark
- LanguageDetected
- LanguageID
- LanguageIDFarEast
- LanguageIDOther
- NoProofing
- OMaths
- Orientation
- PageSetup
- ParagraphFormat
- Paragraphs
- Parent
- PreviousBookmarkID
- Range
- Rows
- Sections
- Sentences
- Shading
- ShapeRange
- Start
- StartIsActive
- StoryLength
- StoryType
- Style
- Tables
- Text
- TopLevelTables
- Type
- WordOpenXML
- Words
- XML
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.