Word vba excel range

Редактирование документов Word из кода VBA Excel. Добавление и форматирование текста. Объект Word.Range, свойство Text, методы InsertAfter и InsertBefore.

Работа с Word из кода VBA Excel
Часть 3. Редактирование документов Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]

Добавление текста в новый документ

Основные объекты, использующиеся в VBA Word для определения места вставки, добавления и форматирования текста – это Selection (выделение), Range (диапазон) и Bookmark (закладка).

Selection и Range позволяют заполнять текстом новые документы или редактировать существующие. Закладки можно использовать для вставки изменяемых реквизитов в шаблоны различных документов: договоры, акты, справки.

Объект Range имеет преимущество перед объектом Selection, так как он может быть создан только программно и не зависит от действий пользователя. Если для вставки и форматирования текста будет использоваться объект Selection, а пользователь во время работы программы просто поставит курсор в другое место документа, результат будет непредсказуем.

Word.Range кардинально отличается от объекта Range в Excel. В приложении Word он представляет из себя набор из одного или множества символов. А также он может вообще не содержать ни одного символа, а быть указателем ввода текста (виртуальным курсором).

Объект Range возвращается свойством Range других объектов приложения Word: Document, Selection, Bookmark, Paragraph, Cell (объект Table).

Вставка текста без форматирования

Если текст вставляется без форматирования, достаточно одной строки кода (myDocument – это переменная):

  • Вставка текста с заменой имеющегося: myDocument.Range.Text = "Вставляемый текст"
  • Добавление текста после имеющегося: myDocument.Range.InsertAfter "Добавляемый текст"
  • Добавление текста перед имеющимся: myDocument.Range.InsertBefore "Добавляемый текст"

Методами InsertAfter и InsertBefore можно вставить текст и на пустую страницу, также, как с помощью свойства Text. Перейти на новый абзац и начать предложение с красной строки можно с помощью ключевых слов vbCr (vbNewLine, vbCrLf) и vbTab.

Вставка текста с форматированием

Для форматирования отдельных участков текста необходимо указать диапазон символов, входящих в этот участок. Здесь нам также поможет объект Range, которому можно задать любой набор символов, содержащихся в документе Word.

Синтаксис присвоения диапазона символов объекту Range:

myDocument.Range(Start:=n, End:=m)

‘или без ключевых слов Start и End

myDocument.Range(n, m)

  • myDocument – переменная;
  • n – номер точки перед начальным символом;
  • m – номер точки после конечного символа.

Счет точек вставки начинается с нуля. Знаки переноса строки, возврата каретки и табуляции учитываются как отдельные символы. 0 – это для объекта Word.Range виртуальная точка вставки на пустом документе, 1 – точка между первым и вторым символом, 2 – точка между вторым и третьим символом и т.д.

На пустом документе объекту Range можно присвоить только виртуальную точку вставки:
myDocument.Range(Start:=0, End:=0)

Первый символ в документе с текстом:
myDocument.Range(Start:=0, End:=1)

Диапазон с 11 по 20 символ:
myDocument.Range(Start:=10, End:=20)

Реальная точка вставки (курсор) принадлежит объекту Selection, который создается вручную или программно с помощью метода Select.

Вставка курсора в начало документа:
myDocument.Range(Start:=0, End:=0).Select

Эта строка вставит курсор между пятым и шестым символами:
myDocument.Range(Start:=5, End:=5).Select

Вставка курсора в конец документа:
myDocument.Range(.Range.Characters.Count - 1, .Range.Characters.Count - 1).Select

Ссылку на объект Range можно присвоить переменной, но при форматировании ее придется каждый раз переопределять и код получится длиннее. Пример присвоения ссылки объектной переменной:

Dim myRange As Word.Range

Set myRange = myDocument.Range(Start:=0, End:=20)

Для Range(Start:=0, End:=20) в документе должно быть как минимум 20 символов.

Однострочные примеры редактирования и форматирования текста

Вставка дополнительного текста внутри имеющегося после заданной точки:
myDocument.Range(Start:=10, End:=10).InsertAfter "Вставляемый текст"

Новый абзац с красной строки (предыдущая строка должна заканчиваться символом возврата каретки или переноса строки):
myDocument.Range.InsertAfter vbTab & "Красная строка"

Присвоение шрифту заданного диапазона зеленого цвета:
myDocument.Range(Start:=10, End:=65).Font.ColorIndex = wdGreen

Меняем обычное начертание на курсив:
myDocument.Range(Start:=10, End:=65).Font.Italic = True

Указываем размер шрифта:
myDocument.Range(Start:=10, End:=65).Font.Size = 22

Применение стандартных стилей:
myDocument.Range(Start:=0, End:=16).Style = "Заголовок 1"

Если вас заинтересуют другие команды форматирования текста, запишите их макрорекордером в VBA Word и примените к объекту Range.

Пример 1
Добавление текста в новый документ без форматирования:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

Sub Primer1()

On Error GoTo Instr

Dim myWord As New Word.Application, _

myDocument As Word.Document

Set myDocument = myWord.Documents.Add

myWord.Visible = True

With myDocument

.Range.Text = «Заголовок по центру» & vbCr

.Range(Start:=0, End:=19).ParagraphFormat.Alignment _

  = wdAlignParagraphCenter

.Range.InsertAfter _

  vbTab & «Первый абзац с красной строки» & vbCr & _

  «Второй абзац не с красной строки» & vbCr & _

  vbTab & «Третий абзац с красной строки»

End With

Set myDocument = Nothing

Set myWord = Nothing

Exit Sub

Instr:

If Err.Description <> «» Then

  MsgBox «Произошла ошибка: « & Err.Description

End If

If Not myWord Is Nothing Then

  myWord.Quit

  Set myDocument = Nothing

  Set myWord = Nothing

End If

End Sub

Пример 2
Добавление текста в новый документ с форматированием:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

Sub Primer2()

On Error GoTo Instr

Dim myWord As New Word.Application, _

myDocument As Word.Document

Set myDocument = myWord.Documents.Add

myWord.Visible = True

With myDocument

.Range.Text = «Заголовок по центру» & vbCr

.Range(Start:=0, End:=19).Style = «Заголовок»

.Range(Start:=0, End:=19).ParagraphFormat.Alignment _

  = wdAlignParagraphCenter

.Range.InsertAfter «Заголовок 1 не по центру» & vbCr

.Range(Start:=20, End:=44).Style = «Заголовок 1»

.Range.InsertAfter vbTab & «Шрифт по умолчанию « _

  & «с красной строки» & vbCr

.Range.InsertAfter «Зеленый курсив, размер 20»

.Range(Start:=82, End:=107).Font.Italic = True

.Range(Start:=82, End:=107).Font.Size = 20

.Range(Start:=82, End:=107).Font.ColorIndex = wdGreen

End With

Set myDocument = Nothing

Set myWord = Nothing

Exit Sub

Instr:

If Err.Description <> «» Then

  MsgBox «Произошла ошибка: « & Err.Description

End If

If Not myWord Is Nothing Then

  myWord.Quit

  Set myDocument = Nothing

  Set myWord = Nothing

End If

End Sub

Вы можете запустить эти примеры в редакторе VBA Excel на своем компьютере и посмотреть результаты.

Содержание

  1. Working with Range Objects
  2. Using the Range method
  3. Using the Range property
  4. Redefining a Range object
  5. Support and feedback
  6. Range object (Word)
  7. Remarks
  8. Methods
  9. Properties
  10. See also
  11. Support and feedback
  12. Объект Range (Word)
  13. Замечания
  14. Методы
  15. Свойства
  16. См. также
  17. Поддержка и обратная связь
  18. Объект Range (Excel)
  19. Примечания
  20. Пример
  21. Методы
  22. Свойства
  23. См. также
  24. Поддержка и обратная связь

Working with Range Objects

A common task when using Visual Basic is to specify an area in a document and then do something with it, such as insert text or apply formatting. For example, you may want to write a macro that locates a word or phrase within a portion of a document. The portion of the document can be represented by a Range object. After the Range object is identified, methods and properties of the Range object can be applied to modify the contents of the range.

A Range object refers to a contiguous area in a document. Each Range object is defined by a starting and ending character position. Similar to the way bookmarks are used in a document, Range objects are used in Visual Basic procedures to identify specific portions of a document. A Range object can be as small as the insertion point or as large as the entire document. However, unlike a bookmark, a Range object exists only while the procedure that defined it is running.

The Start, End, and StoryType properties uniquely identify a Range object. The Start and End properties return or set the starting and ending character positions of the Range object. The character position at the beginning of the document is zero, the position after the first character is one, and so on. There are several story types represented by the WdStoryType constants of the StoryType property.

Range objects are independent of the selection. That is, you can define and modify a range without changing the current selection. You can also define multiple ranges in a document, but there is only one selection per document pane.

Using the Range method

Use the Range method of the Document object to create a Range object that is located in the main story and has a given start and endpoint. The following example creates a Range object that starts at the beginning of the first character and extends through the tenth character.

You can see that the Range object is created when you apply a property or method to the Range object. For example, the following applies bold formatting to the first 10 characters in the active document.

When you need to refer to a Range object multiple times, you can use the Set statement to set a variable equal to the Range object. However, if you only need to perform a single action on a Range object, you don’t need to store the object in a variable. The same result can be achieved using just one instruction that identifies the range and changes the Bold property.

Like a bookmark, a range can span a group of characters or mark a location in a document. The Range object in the following example has the same starting and ending points. The range does not include any text. The following example inserts text at the beginning of the active document.

You can define the beginning and endpoints of a range using the character position numbers, as shown above, or use the Start and End properties with objects such as Selection, Bookmark, or Range objects. The following example creates a Range object beginning at the start of the second paragraph and ending after the third paragraph.

For additional information and examples, see the Range method.

Using the Range property

The Range property appears on multiple objects—such as Paragraph, Bookmark, and Cell—and is used to return a Range object. The following example returns a Range object that refers to the first paragraph in the active document.

After you have a Range object, you can use any of its properties or methods to modify the Range object. The following example selects the second paragraph in the active document and then centers the selection.

If you need to apply numerous properties or methods to the same Range object, you can use the With…End With structure. The following example formats the text in the first paragraph of the active document.

For additional information and examples, see the Range property topic.

Redefining a Range object

Use the SetRange method to redefine an existing Range object. The following example defines a range as the current selection. The SetRange method then redefines the range so that it refers to the current selection plus the next 10 characters.

For additional information and examples, see the Range method for the Document.

When debugging your macros, you can use the Select method to ensure that a Range object is referring to the correct range of text. For example, the following selects a Range object that refers to the second and third paragraphs in the active document, and then formats the font of the selection.

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

Range object (Word)

Represents a contiguous area in a document. Each Range object is defined by a starting and ending character position.

Similar to the way bookmarks are used in a document, Range objects are used in Visual Basic procedures to identify specific portions of a document. However, unlike a bookmark, a Range object only exists while the procedure that defined it is running. Range objects are independent of the selection. That is, you can define and manipulate a range without changing the selection. You can also define multiple ranges in a document, while there can be only one selection per pane.

Use the Range method to return a Range object defined by the given starting and ending character positions. The following example returns a Range object that refers to the first 10 characters in the active document.

Use the Range property to return a Range object defined by the beginning and end of another object. The Range property applies to many objects (for example, Paragraph, Bookmark, and Cell). The following example returns a Range object that refers to the first paragraph in the active document.

The following example returns a Range object that refers to the second through fourth paragraphs in the active document.

For more information about working with Range objects, see Working with Range objects.

Methods

Properties

See also

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

Объект Range (Word)

Представляет непрерывную область в документе. Каждый объект Range определяется начальной и конечной позицией символов.

Замечания

Как и в случае с закладками в документе, объекты Range используются в процедурах Visual Basic для идентификации определенных частей документа. Однако, в отличие от закладки, объект Range существует только при выполнении процедуры, которая его определила. Объекты range не зависят от выделенного объекта. То есть можно определить диапазон и управлять им, не изменяя выделенный фрагмент. Вы также можете определить несколько диапазонов в документе, в то время как в каждой области может быть только один выбор.

Используйте метод Range , чтобы вернуть объект Range , определенный заданной начальной и конечной позициями символов. В следующем примере возвращается объект Range , который ссылается на первые 10 символов в активном документе.

Используйте свойство Range для возврата объекта Range , определенного в начале и конце другого объекта. Свойство Range применяется ко многим объектам (например, Paragraph, Bookmark и Cell). В следующем примере возвращается объект Range , ссылающийся на первый абзац активного документа.

В следующем примере возвращается объект Range , ссылающийся на второй по четвертый абзацы в активном документе.

Дополнительные сведения о работе с объектами Range см. в разделе Работа с объектами Range.

Методы

Свойства

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Объект Range (Excel)

Представляет ячейку, строку, столбец или группу ячеек, содержащую один или несколько смежных блоков ячеек или объемный диапазон.

Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.

Примечания

Элемент по умолчанию объекта Range направляет вызовы без параметров в свойство Value, а вызовы с параметрами — в элемент Item. Таким образом, someRange = someOtherRange соответствует someRange.Value = someOtherRange.Value , someRange(1) соответствует someRange.Item(1) и someRange(1,1) соответствует someRange.Item(1,1) .

В разделе Пример описаны следующие свойства и методы для возврата объекта Range:

  • Свойства Range и Cells объекта Worksheet
  • Свойства Range и Cells объекта Range
  • Свойства Rows и Columns объекта Worksheet
  • Свойства Rows и Columns объекта Range
  • Свойство Offset объекта Range
  • Метод Union объекта Application

Пример

Чтобы вернуть объект Range, представляющий одну ячейку или диапазон ячеек, используйте синтаксис Range ( arg ), где arg обозначает диапазон. В следующем примере значение ячейки A1 помещается в ячейку A5.

В следующем примере диапазон A1:H8 заполняется случайными числами путем задания формулы для каждой ячейки в диапазоне. При использовании без квалификатора объекта (объекта слева от точки) свойство Range возвращает диапазон на активном листе. Если активное окно не является листом, метод завершается с ошибкой.

Используйте метод Activate объекта Worksheet, чтобы активировать лист перед использованием свойства Range без явного квалификатора объекта.

В следующем примере очищается содержимое диапазона Criteria.

Если используется текстовый аргумент для адреса диапазона, необходимо указать адрес в нотации стиля A1 (нельзя использовать нотацию в стиле R1C1).

Чтобы получить диапазон, содержащий все отдельные ячейки листа, используйте свойство Cells на листе. Вы можете обращаться к отдельным ячейкам, используя синтаксис Item(строка, столбец), где строка — индекс строки, а столбец — индекс столбца. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. В следующем примере на первом листе активной книги ячейке A1 присваивается значение 24, а в ячейке B1 — значение 42.

В следующем примере задается формула для ячейки A2.

Хотя также можно использовать Range(«A1») , чтобы вернуть значение ячейки A1, иногда свойство Cells может быть удобнее, так как позволяет использовать переменную для строки или столбца. В следующем примере создаются заголовки столбцов и строк на листе Sheet1. Обратите внимание, что после активации листа можно использовать свойство Cells без явного объявления листа (оно возвращает ячейку на активном листе).

Хотя для изменения ссылок в стиле A1 можно использовать строковые функции Visual Basic, проще (и лучше при программировании) использовать нотацию Cells(1, 1) .

Используйте синтаксис_выражение_.Cells, где выражение возвращает объект Range, чтобы получить диапазон с тем же адресом, состоящий из отдельных ячеек. В таком диапазоне отдельные ячейки доступны с помощью синтаксиса Item(строка, столбец) относительно левого верхнего угла первой области диапазона. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. В следующем примере на первом листе активной книги в ячейках C5 и D5 указывается формула.

Чтобы вернуть объект Range, используйте синтаксис Range ( ячейка1, ячейка2 ), где ячейка1 и ячейка2 — это объекты Range, указывающие начальную и конечную ячейки. В следующем примере устанавливается тип линии границы для ячеек A1:J10.

Имейте в виду, что точка перед каждым появлением свойства Cells является обязательной, если результат предыдущего оператора With нужно применять к свойству Cells. В данном случае указано, что ячейки расположены на листе один (без точки свойство Cells будет возвращать ячейки активного листа).

Чтобы получить диапазон, содержащий все строки листа, используйте свойство Rows на листе. Вы можете обращаться к отдельным строкам с помощью синтаксиса Item(строка), где строка — это индекс строки. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из строк. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells.

В следующем примере удаляются строки 5 и 10 первого листа активной книги.

Чтобы получить диапазон, содержащий все столбцы листа, используйте свойство Columns на листе. Вы можете обращаться к отдельным столбцам с помощью синтаксиса Item(строка) [sic], где строка — это индекс столбца в виде числа или адреса столбца в формате А1. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из столбцов. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells.

В следующем примере удаляются столбцы B, C, E и J первого листа активной книги.

Используйте синтаксис_выражение_.Rows, где выражение возвращает объект Range, чтобы получить диапазон, состоящий из строк первой области диапазона. Вы можете обращаться к отдельным строкам с помощью синтаксиса Item(строка), где строка — это относительный индекс строки от верхнего края первой области диапазона. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из строк. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells.

В следующем примере удаляются диапазоны C8:D8 и C6:D6 первого листа активной книги.

Используйте синтаксис_выражение_.Columns, где выражение возвращает объект Range, чтобы получить диапазон, состоящий из столбцов первой области диапазона. Вы можете обращаться к отдельным столбцам с помощью синтаксиса Item(строка) [sic], где строка — это относительный индекс столбца от левого края первой области диапазона, указанный в виде числа или адреса столбца в формате A1. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из столбцов. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells.

В следующем примере удаляются диапазоны L2:L10, G2:G10, F2:F10 и D2:D10 первого листа активной книги.

Чтобы вернуть диапазон с указанным смещением относительно другого диапазона, используйте синтаксис Offset ( строка, столбец ), где строка и столбец — это смещения строк и столбцов. В следующем примере выделяются ячейки, расположенные на три строки вниз и на один столбец вправо от ячейки в левом верхнем углу текущего выделенного фрагмента. Нельзя выбрать ячейку, которая находится не на активном листе, поэтому сначала необходимо активировать лист.

Используйте синтаксис Union ( диапазон1, диапазон2, . ) для возврата диапазонов из нескольких областей, то есть диапазонов, состоящих из двух или более смежных блоков ячеек. В следующем примере создается объект, определенный как объединение диапазонов A1:B2 и C3:D4, а затем выбирается определенный диапазон.

При работе с выделенными фрагментами, содержащими несколько областей, удобно применять свойство Areas. Оно разделяет выделенный фрагмент с несколькими областями на отдельные объекты Range, а затем возвращает объекты в виде коллекции. Используйте свойство Count в возвращенной коллекции, чтобы убедиться, что выделение содержит более одной области, как показано в следующем примере.

В этом примере используется метод AdvancedFilter объекта Range для создания списка уникальных значений, а также количества появлений этих уникальных значений в диапазоне столбца A.

Методы

Свойства

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Содержание

  • 1 Adding Clickable Sorting to Worksheet Lists
  • 2 Address, a read-only property, displays the cell address for a Range object in absolute notation (a dollar sign before the column letter and before the row number).
  • 3 Assign the value in C1 in the active sheet to D10 in the sheet named Sales, in the active workbook
  • 4 Assign the value of a property to a variable so it can be used in later code
  • 5 Building the Table
  • 6 Change the Value property for a range of any size: statement enters the number 123 into each cell in a range
  • 7 Copies the contents of range A1:B3 to the clipboard:
  • 8 Count property returns the number of cells in a range (all cells, not just the nonblank cells). It»s a read-only property.
  • 9 Count the blank elements in a range
  • 10 Deletes a range and then fills the resulting gap by shifting the other cells to the left:
  • 11 Displays a message box that shows the value in cell A1 on Sheet1:
  • 12 Expression refers to a cell one row below cell A1 and two columns to the right of cell A1: this refers to the cell commonly known as C2
  • 13 Find in a range
  • 14 HasFormula property
  • 15 Highlights selected range
  • 16 If the Range object consists of more than one cell, the Column property returns the column number of the first column in the range
  • 17 If the Range object consists of more than one cell, the Row property returns the row number of the first row in the range.
  • 18 If the Range object is not in the active worksheet in the active workbook
  • 19 Modify multiple cells at once using a range reference (like A1:A2)
  • 20 Read a range from InputBox
  • 21 read the Value property only for a single- cell Range object: statement generates an error
  • 22 Returns the type of a range in an area
  • 23 Row property returns the row number of a single-cell range.
  • 24 Select a range and activate another
  • 25 Show Edit Ranges
  • 26 Sum the elements in a range
  • 27 The Column property returns the column number of a single-cell range;
  • 28 The Text property returns a string that represents the text as displayed in a cell: the formatted value. The Text property is read-only.
  • 29 To enter the name Florence into cell C10, you assign the name to the Value property of the Range object
  • 30 Use object variables to represent the ranges
  • 31 Value is the default property for a Range object.

Adding Clickable Sorting to Worksheet Lists

   <source lang="vb">

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

   Dim mnDirection As Integer 
   Dim mnColumn As Integer 
   If Target.Column < 5 And Target.Row = 1 Then 
       If Target.Column <> mnColumn Then 
           mnColumn = Target.Column 
           mnDirection = xlAscending 
       Else 
           If mnDirection = xlAscending Then 
               mnDirection = xlDescending 
           Else 
               mnDirection = xlAscending 
           End If 
       End If 
       Dim rg As Range 
       Set rg = Me.Cells(1, 1).CurrentRegion 
       rg.Sort Key1:=rg.Cells(1, mnColumn), _ 
                Order1:=mnDirection, _ 
                Header:=xlYes 
   
       Set rg = Nothing 
   End If 

End Sub

</source>
   
  

Address, a read-only property, displays the cell address for a Range object in absolute notation (a dollar sign before the column letter and before the row number).

   <source lang="vb">

Sub cellAddress()

   MsgBox range(cells(1, 1), cells(5, 5)).Address

End Sub

</source>
   
  

Assign the value in C1 in the active sheet to D10 in the sheet named Sales, in the active workbook

   <source lang="vb">

Sub valueDemo()

    Worksheets("Sales").range("D10").value = range("C1").value

End Sub

</source>
   
  

Assign the value of a property to a variable so it can be used in later code

   <source lang="vb">

Sub valueDemo2()

    OpeningStock = range("M100").value
    range("M100").value = 100
    ActiveSheet.printOut
    range("M100").value = OpeningStock

End Sub

</source>
   
  

Building the Table

   <source lang="vb">

Sub MultiplicationTable()

   " Build a multiplication table using a single formula
   Range("B1:M1").Value = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
   Range("B1:M1").Font.Bold = True
   Range("B1:M1").Copy
   Range("A2:A13").PasteSpecial Transpose:=True
   Range("B2:M13").FormulaR1C1 = "=RC1*R1C"
   Cells.EntireColumn.AutoFit

End Sub

</source>
   
  

Change the Value property for a range of any size: statement enters the number 123 into each cell in a range

   <source lang="vb">

Sub changeMain()

   Worksheets("Sheet1").range("A1:C3").value = 123

End Sub

</source>
   
  

Copies the contents of range A1:B3 to the clipboard:

   <source lang="vb">

Sub copyDemo()

    range("A1:B3").Copy

End Sub

</source>
   
  

Count property returns the number of cells in a range (all cells, not just the nonblank cells). It»s a read-only property.

   <source lang="vb">

Sub count()

   MsgBox range("A1:C3").count

End Sub

</source>
   
  

Count the blank elements in a range

   <source lang="vb">

Public Sub Array3()

 Dim Data As Variant, X As Variant
 Dim Message As String, i As Integer
 Data = Range("A1:A20").Value
 i = 1
 Do
   Debug.Print "Lower Bound = " & LBound(Data, i)
   Debug.Print "Upper Bound = " & UBound(Data, i)
   i = i + 1
   On Error Resume Next
   X = UBound(Data, i)
   If Err.Number <> 0 Then Exit Do
   On Error GoTo 0
 Loop
 Debug.Print "Number of Non Blank Elements = " & WorksheetFunction.CountA(Data)

End Sub

</source>
   
  

Deletes a range and then fills the resulting gap by shifting the other cells to the left:

   <source lang="vb">

Sub deleteLeft()

   range("C6:C10").delete xlToLeft

End Sub

</source>
   
  

Displays a message box that shows the value in cell A1 on Sheet1:

   <source lang="vb">

Sub valueDemo()

   MsgBox Worksheets("Sheet1").range("A1").value

End Sub

</source>
   
  

Expression refers to a cell one row below cell A1 and two columns to the right of cell A1: this refers to the cell commonly known as C2

   <source lang="vb">

Sub offset()

   range("A1").offset(1, 2).Select

End Sub

</source>
   
  

Find in a range

   <source lang="vb">

Public Sub FindIt()

 Dim aRange As Range
 
 Set aRange = Range("A1:A12").Find(what:="Jun",LookAt:=xlWhole, LookIn:=xlValues)
   
 If aRange Is Nothing Then
   MsgBox "Data not found"
   Exit Sub
 Else
   aRange.Resize(1, 3).Copy Destination:=Range("G1")
 End If

End Sub

</source>
   
  

HasFormula property

   <source lang="vb">

Sub hasfor()

   Dim FormulaTest As Boolean
   FormulaTest = range("A1:A2").hasFormula

End Sub

</source>
   
  

Highlights selected range

   <source lang="vb">

Sub GetRange()

  Dim Rng As Range

  On Error Resume Next
  Set Rng = Application.InputBox(prompt:="Enter range", Type:=8)
  If Rng Is Nothing Then
     MsgBox "Operation Cancelled"
  Else
     Rng.Select
  End If

End Sub

</source>
   
  

If the Range object consists of more than one cell, the Column property returns the column number of the first column in the range

   <source lang="vb">

Sub columnRange()

   MsgBox Sheets("Sheet1").range("A:F3").column

End Sub

</source>
   
  

If the Range object consists of more than one cell, the Row property returns the row number of the first row in the range.

   <source lang="vb">

Sub rowRange()

   MsgBox Sheets("Sheet1").range("A1:F3").row

End Sub

</source>
   
  

If the Range object is not in the active worksheet in the active workbook

   <source lang="vb">

Sub rangeDemo()

    Workbooks("Sales.xls").Worksheets("DataInput").Range("C10").Value = 10

End Sub

</source>
   
  

Modify multiple cells at once using a range reference (like A1:A2)

   <source lang="vb">

    Sub MyMacro()
        " Insert the text "Hello" in ten cells
        Range("A1:A10").Value = "Hello"
    End Sub
</source>
   
  

Read a range from InputBox

   <source lang="vb">

Public Sub SelectRange()

 Dim aRange As Range
     
 On Error Resume Next
 Set aRange = Application.InputBox(prompt:="Enter range", Type:=8)
 If aRange Is Nothing Then
   MsgBox "Operation Cancelled"
 Else
   aRange.Select
 End If

End Sub

</source>
   
  

read the Value property only for a single- cell Range object: statement generates an error

   <source lang="vb">

Sub main()

   MsgBox Worksheets("Sheet1").range("A1:C3").value

End Sub

</source>
   
  

Returns the type of a range in an area

   <source lang="vb">

Private Function AreaType(RangeArea As Range) As String

   Select Case True
       Case RangeArea.Count = 1
           AreaType = "Cell"
       Case RangeArea.Count = Cells.Count
           AreaType = "Worksheet"
       Case RangeArea.Rows.Count = Cells.Rows.Count
           AreaType = "Column"
       Case RangeArea.Columns.Count = Cells.Columns.Count
           AreaType = "Row"
       Case Else
           AreaType = "Block"
   End Select

End Function

</source>
   
  

Row property returns the row number of a single-cell range.

   <source lang="vb">

Sub row()

   MsgBox Sheets("Sheet1").range("F3").row

End Sub

</source>
   
  

Select a range and activate another

   <source lang="vb">

Public Sub SelectAndActivate()

 Range("B3:E10").Select
 Range("C5").Activate

End Sub

</source>
   
  

Show Edit Ranges

   <source lang="vb">

Sub ShowEditRanges()

   Dim ws As Worksheet, ual As UserAccessList, aer As AllowEditRange
   Set ws = ThisWorkbook.Sheets("Protection")
   For Each aer In ws.Protection.AllowEditRanges
       Debug.Print aer.Title, aer.Range.Address
   Next

End Sub

</source>
   
  

Sum the elements in a range

   <source lang="vb">

Public Sub Array1()

 Dim Data(10) As Integer
 Dim Message As String, i As Integer
 For i = LBound(Data) To UBound(Data)
   Data(i) = i
 Next i
 Debug.Print "Lower Bound = " & LBound(Data)
 Debug.Print "Upper Bound = " & UBound(Data)
 Debug.Print "Number of Elements = " & WorksheetFunction.Count(Data)
 Debug.Print "Sum of Elements = " & WorksheetFunction.Sum(Data)

End Sub

</source>
   
  

The Column property returns the column number of a single-cell range;

   <source lang="vb">

Sub column()

   MsgBox Sheets("Sheet1").range("F3").column

End Sub

</source>
   
  

The Text property returns a string that represents the text as displayed in a cell: the formatted value. The Text property is read-only.

   <source lang="vb">

Sub text()

   MsgBox Worksheets("Sheet1").range("A1").text
   MsgBox Worksheets("Sheet1").range("A1").value

End Sub

</source>
   
  

To enter the name Florence into cell C10, you assign the name to the Value property of the Range object

   <source lang="vb">

Sub valueDemo()

    Range("C10").Value = "Florence"

End Sub

</source>
   
  

Use object variables to represent the ranges

   <source lang="vb">

Sub CopyRange3()

   Set Rng1 = Workbooks("File1.xls").Sheets("Sheet1").range("A1")
   Set Rng2 = Workbooks("File2.xls").Sheets("Sheet2").range("A1")
   Rng1.Copy Rng2

End Sub

</source>
   
  

Value is the default property for a Range object.

   <source lang="vb">

Sub def()

   Worksheets("Sheet1").range("A1").value = 75
   Worksheets("Sheet1").range("A1") = 75

End Sub

</source>
title keywords f1_keywords ms.prod api_name ms.assetid ms.date ms.localizationpriority

Range object (Word)

vbawd10.chm2398

vbawd10.chm2398

word

Word.Range

15a7a1c4-5f3f-5b6e-60e9-29688de3f274

05/23/2019

medium

Range object (Word)

Represents a contiguous area in a document. Each Range object is defined by a starting and ending character position.

Remarks

Similar to the way bookmarks are used in a document, Range objects are used in Visual Basic procedures to identify specific portions of a document. However, unlike a bookmark, a Range object only exists while the procedure that defined it is running. Range objects are independent of the selection. That is, you can define and manipulate a range without changing the selection. You can also define multiple ranges in a document, while there can be only one selection per pane.

Use the Range method to return a Range object defined by the given starting and ending character positions. The following example returns a Range object that refers to the first 10 characters in the active document.

Set myRange = ActiveDocument.Range(Start:=0, End:=10)

Use the Range property to return a Range object defined by the beginning and end of another object. The Range property applies to many objects (for example, Paragraph, Bookmark, and Cell). The following example returns a Range object that refers to the first paragraph in the active document.

Set aRange = ActiveDocument.Paragraphs(1).Range

The following example returns a Range object that refers to the second through fourth paragraphs in the active document.

Set aRange = ActiveDocument.Range( _ 
 Start:=ActiveDocument.Paragraphs(2).Range.Start, _ 
 End:=ActiveDocument.Paragraphs(4).Range.End)

For more information about working with Range objects, see Working with Range objects.

Methods

  • AutoFormat
  • Calculate
  • CheckGrammar
  • CheckSpelling
  • CheckSynonyms
  • Collapse
  • ComputeStatistics
  • ConvertHangulAndHanja
  • ConvertToTable
  • Copy
  • CopyAsPicture
  • Cut
  • Delete
  • DetectLanguage
  • EndOf
  • Expand
  • ExportAsFixedFormat
  • ExportAsFixedFormat2
  • ExportFragment
  • GetSpellingSuggestions
  • GoTo
  • GoToEditableRange
  • GoToNext
  • GoToPrevious
  • ImportFragment
  • InRange
  • InsertAfter
  • InsertAlignmentTab
  • InsertAutoText
  • InsertBefore
  • InsertBreak
  • InsertCaption
  • InsertCrossReference
  • InsertDatabase
  • InsertDateTime
  • InsertFile
  • InsertParagraph
  • InsertParagraphAfter
  • InsertParagraphBefore
  • InsertSymbol
  • InsertXML
  • InStory
  • IsEqual
  • LookupNameProperties
  • ModifyEnclosure
  • Move
  • MoveEnd
  • MoveEndUntil
  • MoveEndWhile
  • MoveStart
  • MoveStartUntil
  • MoveStartWhile
  • MoveUntil
  • MoveWhile
  • Next
  • NextSubdocument
  • Paste
  • PasteAndFormat
  • PasteAppendTable
  • PasteAsNestedTable
  • PasteExcelTable
  • PasteSpecial
  • PhoneticGuide
  • Previous
  • PreviousSubdocument
  • Relocate
  • Select
  • SetListLevel
  • SetRange
  • Sort
  • SortAscending
  • SortByHeadings
  • SortDescending
  • StartOf
  • TCSCConverter
  • WholeStory

Properties

  • Application
  • Bold
  • BoldBi
  • BookmarkID
  • Bookmarks
  • Borders
  • Case
  • Cells
  • Characters
  • CharacterStyle
  • CharacterWidth
  • Columns
  • CombineCharacters
  • Comments
  • Conflicts
  • ContentControls
  • Creator
  • DisableCharacterSpaceGrid
  • Document
  • Duplicate
  • Editors
  • EmphasisMark
  • End
  • EndnoteOptions
  • Endnotes
  • EnhMetaFileBits
  • Fields
  • Find
  • FitTextWidth
  • Font
  • FootnoteOptions
  • Footnotes
  • FormattedText
  • FormFields
  • Frames
  • GrammarChecked
  • GrammaticalErrors
  • HighlightColorIndex
  • HorizontalInVertical
  • HTMLDivisions
  • Hyperlinks
  • ID
  • Information
  • InlineShapes
  • IsEndOfRowMark
  • Italic
  • ItalicBi
  • Kana
  • LanguageDetected
  • LanguageID
  • LanguageIDFarEast
  • LanguageIDOther
  • ListFormat
  • ListParagraphs
  • ListStyle
  • Locks
  • NextStoryRange
  • NoProofing
  • OMaths
  • Orientation
  • PageSetup
  • ParagraphFormat
  • Paragraphs
  • ParagraphStyle
  • Parent
  • ParentContentControl
  • PreviousBookmarkID
  • ReadabilityStatistics
  • Revisions
  • Rows
  • Scripts
  • Sections
  • Sentences
  • Shading
  • ShapeRange
  • ShowAll
  • SpellingChecked
  • SpellingErrors
  • Start
  • StoryLength
  • StoryType
  • Style
  • Subdocuments
  • SynonymInfo
  • Tables
  • TableStyle
  • Text
  • TextRetrievalMode
  • TextVisibleOnScreen
  • TopLevelTables
  • TwoLinesInOne
  • Underline
  • Updates
  • WordOpenXML
  • Words
  • XML

See also

  • Word Object Model Reference

[!includeSupport and feedback]

Знакомство с объектами Range

Если вы редактируете документ самостоятельно, вы должны поместить указатель мыши в нужное место либо выделить определенный фрагмент, прежде чем добавлять, удалять или форматировать текст. Однако в Word объекты Range избавляют вас от подобной необходимости. Объект Range определяет неразрывный блок текста в документе. Объекты Range полностью независимы от точки вставки или выделенного раздела, которые пользователь видит в окне документа. После создания объекта Range вы сможете манипулировать текстом, используя команды VBA, полные аналоги мощных команд редактирования Word, точно так же, как при использовании объектов Selection.

Вы можете определить объекты Range в программном коде одним из двух следующих способов:

* работая с диапазонами с помощью свойства Range;

* определив диапазоны с помощью метода Range объекта Document.

Использование свойства Range

Открытый документ Word уже содержит объекты Range, соответствующие многим его элементам. Каждый абзац, а также таблица, отдельная ячейка таблицы, комментарий или нижний колонтитул (и это далеко не полный список) определяют диапазоны. Вы можете считать, что все эти диапазоны существуют в некотором виртуальном мире, пока не вы не обратитесь к ним с помощью свойства Range соответствующего объекта. Например, для определения объекта Range, соответствующего первому абзацу активного документа, вам следует использовать объектную ссылку следующего вида.

ActiveDocumep.t. Paragraphs (1) . Range

Поскольку подобные стандартные диапазоны уже существуют в Word, вы можете использовать объектные ссылки на них напрямую, обходясь без каких-либо переменных. Это особенно хорошо подходит для тех ситуаций, когда вам необходим один конкретный диапазон для одной операции. Например, приведенная ниже инструкция копирует вторую таблицу в документе в буфер обмена, используя метод Сору объекта Range:

ActiveDocument.Tabl es[2) .Range.Copy

Если несколько инструкций используют один и тот же диапазон, вы можете использовать конструкцию With… для ускорения как ввода кода программы, так и ее выполнения. Ниже приведен пример кода, который проводит сортировку абзацев в третьем разделе документа, отображая первое предложение полужирным:

With ActiveDocument.Section(3).Range

.Sort Sort Order := wdSortOrderAscending

.Sentences ( 1).Range.Bold = True

End With

Приведенный выше пример иллюстрирует, как объект Range содержит другие объекты, в свою очередь содержащие диапазоны. Инструкция в третьей строке обращается к дипазону, соответствующему первому предложению в исходном диапазоне, после чего отображает его полужирным. Также обратите внимание на то, что вы не можете применить форматирование непосредственно к объектам, таким как слова, предложения или абзацы; для того чтобы это сделать, вам следует использовать их свойства Range.

Если вы планируете использовать диапазон в нескольких инструкциях, которые не следуют одна за другой, вам придется присвоить диапазон переменной. Это позволит вам быстрее составить код программы, а также в конечном итоге ускорить ее выполнение.

Объекты Selection также обладают свойством Range. Это значительно упрощает использование свойств и методов, принадлежащих объектам Range существующих выделенных областей. Приведенный ниже пример присваивает диапазон выделенной области переменной, перемещает выделенную область, после чего преобразует текст прописными буквами:

Set deRange = Selection.Range

Selection.Move Unit := wdParagraph, Count := 3

DeRange.Case = wdLowerCase

Читайте также

Использование свойства Range

Использование свойства Range
Открытый документ Word уже содержит объекты Range, соответствующие многим его элементам. Каждый абзац, а также таблица, отдельная ячейка таблицы, комментарий или нижний колонтитул (и это далеко не полный список) определяют диапазоны. Вы можете

Определение диапазонов с помощью метода Range

Определение диапазонов с помощью метода Range
Если существующие объекты не содержат текст, с которым вы хотите работать, создайте собственный объект Range. В любом открытом документе вы сможете определить столько объектов Range, сколько вам нужно. При этом используется метод

Использование в коде объектов Range для работы с ячейками

Использование в коде объектов Range для работы с ячейками
Весьма неожиданно, что в Excel нет объекта Cell (Ячейка). Поэтому при написании кода следует руководствоваться следующим подходом: для указания ячейки в VBA-коде используется объект Range. В Excel объект Range может заключать в

Определение объекта Range

Определение объекта Range
В Excel имеется несколько возможных методов идентификации диапазона из одной или нескольких ячеек, на который должен воздействовать написанный код. Для достижения данной цели используются следующие.Стандартная ссылка на ячейку. Так называемый

Работа с MBV-объектами

Работа с MBV-объектами
Наши первые приложения удаленного взаимодействия позволяли доступ клиентов к одному WKO-типу. Напомним, что WKO-типы (по определению) являются MBR-типами, поэтому доступ клиента к ним осуществляется через агента-посредника. В противоположность этому,

Работа с объектами команд

Работа с объектами команд
Теперь, когда вы понимаете роль объекта соединения, мы выясним, как предъявить SQL-запрос базе данных. Тип SqlCommand (который получается из DbCommand) является объектом представлением SQL-запроса, имени таблицы или хранимой процедуры. Вид соответствующей

Операции с объектами

Операции с объектами
Взглянем еще раз на нашу будущую визитку. Вы увидите, что каждый ее отдельный элемент заключен в пунктирную рамочку. А если вы щелкнете по нему, то на линиях рамки проявятся кружочки – по углам и в центре каждой линии.

Эти рамки нужны лишь для того,

Действия с созданными объектами

Действия с созданными объектами
К основным операциям с объектами относятся изменение размеров и свойств, удаление, копирование, вырезание и др. Также после размещения нескольких объектов на рабочих страницах mimio Блокнота может понадобиться их преобразовать,

Действия с созданными объектами

Действия с созданными объектами
К основным операциям с объектами относятся изменение размеров и свойств, удаление, копирование, вырезание, упорядочивание и др.Пропорциональное изменение размера объекта1. Выделить объект инструментом Выбрать.2. Прижать маркер к

Работа с объектами и ссылками

Работа с объектами и ссылками
Вернемся к более приземленным проблемам и рассмотрим, как программные системы работают с объектами, как создают и используют гибкие структуры данных.

Что происходит с объектами

Что происходит с объектами
ОО-программа создает объекты. Предыдущая лекция показала, как полезно полагаться на динамическое создание для получения гибких объектных структур, подстраивающихся автоматически к нуждам

Работа с утилизированными объектами

Работа с утилизированными объектами
Для реализации fresh и recycle, можно среди других возможных вариантов представить available как стек: fresh будет удалять элемент из стека, а recycle будет помещать элемент в стек. Создадим класс STACK_OF_LINKABLES для этого случая и добавим следующие

6.3.6. Управляем объектами

6.3.6. Управляем объектами
Для выполнения заданий нам понадобится материал разд. 5.3.3.Вспомним, какие действия будут происходить на слайде.? Звук начинает проигрываться с самого начала С самого же начала появляется текст с фоном.? Затем при чтении слова «Ивашка» появляется

Понравилась статья? Поделить с друзьями:
  • Word vba document close
  • Word vba debug print
  • Word vba column width
  • Word vba close file
  • Word vba close all documents