Функция range в vba

Функция range в vba

Представляет ячейку, строку, столбец или группу ячеек, содержащую один или несколько смежных блоков ячеек или объемный диапазон. Represents a cell, a row, a column, a selection of cells containing one or more contiguous blocks of cells, or a 3D range.

Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Interested in developing solutions that extend the Office experience across multiple platforms? Ознакомьтесь с новой моделью надстроек Office. Check out the new Office Add-ins model. У надстроек Office мало места по сравнению с надстройками и решениями VSTO, которые можно создавать с помощью практически любой технологии веб-программирования, например HTML5, JavaScript, CSS3 и XML. Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.

Примечания Remarks

Элемент по умолчанию объекта Range направляет вызовы без параметров в свойство Value, а вызовы с параметрами — в элемент Item. The default member of Range forwards calls without parameters to the Value property and calls with parameters to the Item member. Таким образом, someRange = someOtherRange соответствует someRange.Value = someOtherRange.Value , someRange(1) соответствует someRange.Item(1) и someRange(1,1) соответствует someRange.Item(1,1) . Accordingly, someRange = someOtherRange is equivalent to someRange.Value = someOtherRange.Value , someRange(1) to someRange.Item(1) and someRange(1,1) to someRange.Item(1,1) .

В разделе Пример описаны следующие свойства и методы для возврата объекта Range: The following properties and methods for returning a Range object are described in the Example section:

  • Свойства Range и Cells объекта WorksheetRange and Cells properties of the Worksheet object
  • Свойства Range и Cells объекта RangeRange and Cells properties of the Range object
  • Свойства Rows и Columns объекта WorksheetRange and Cells properties of the Worksheet object
  • Свойства Rows и Columns объекта RangeRange and Cells properties of the Range object
  • Свойство Offset объекта RangeOffset property of the Range object
  • Метод Union объекта ApplicationUnion method of the Application object

Пример Example

Чтобы вернуть объект Range, представляющий одну ячейку или диапазон ячеек, используйте синтаксис Range ( arg ), где arg обозначает диапазон. Use Range (arg), where arg names the range, to return a Range object that represents a single cell or a range of cells. В следующем примере значение ячейки A1 помещается в ячейку A5. The following example places the value of cell A1 in cell A5.

В следующем примере диапазон A1:H8 заполняется случайными числами путем задания формулы для каждой ячейки в диапазоне. The following example fills the range A1:H8 with random numbers by setting the formula for each cell in the range. При использовании без квалификатора объекта (объекта слева от точки) свойство Range возвращает диапазон на активном листе. When it’s used without an object qualifier (an object to the left of the period), the Range property returns a range on the active sheet. Если активное окно не является листом, метод завершается с ошибкой. If the active sheet isn’t a worksheet, the method fails.

Используйте метод Activate объекта Worksheet, чтобы активировать лист перед использованием свойства Range без явного квалификатора объекта. Use the Activate method of the Worksheet object to activate a worksheet before you use the Range property without an explicit object qualifier.

В следующем примере очищается содержимое диапазона Criteria. The following example clears the contents of the range named Criteria.

Если используется текстовый аргумент для адреса диапазона, необходимо указать адрес в нотации стиля A1 (нельзя использовать нотацию в стиле R1C1). If you use a text argument for the range address, you must specify the address in A1-style notation (you cannot use R1C1-style notation).

Чтобы получить диапазон, содержащий все отдельные ячейки листа, используйте свойство Cells на листе. Use Cells on a worksheet to obtain a range consisting all single cells on the worksheet. Вы можете обращаться к отдельным ячейкам, используя синтаксис Item(строка, столбец), где строка — индекс строки, а столбец — индекс столбца. You can access single cells via Item(row, column), where row is the row index and column is the column index. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. Item can be omitted since the call is forwarded to it by the default member of Range. В следующем примере на первом листе активной книги ячейке A1 присваивается значение 24, а в ячейке B1 — значение 42. The following example sets the value of cell A1 to 24 and of cell B1 to 42 on the first sheet of the active workbook.

В следующем примере задается формула для ячейки A2. The following example sets the formula for cell A2.

Хотя также можно использовать Range("A1") , чтобы вернуть значение ячейки A1, иногда свойство Cells может быть удобнее, так как позволяет использовать переменную для строки или столбца. Although you can also use Range("A1") to return cell A1, there may be times when the Cells property is more convenient because you can use a variable for the row or column. В следующем примере создаются заголовки столбцов и строк на листе Sheet1. The following example creates column and row headings on Sheet1. Обратите внимание, что после активации листа можно использовать свойство Cells без явного объявления листа (оно возвращает ячейку на активном листе). Be aware that after the worksheet has been activated, the Cells property can be used without an explicit sheet declaration (it returns a cell on the active sheet).

Хотя для изменения ссылок в стиле A1 можно использовать строковые функции Visual Basic, проще (и лучше при программировании) использовать нотацию Cells(1, 1) . Although you could use Visual Basic string functions to alter A1-style references, it is easier (and better programming practice) to use the Cells(1, 1) notation.

Используйте синтаксис_выражение_.Cells, где выражение возвращает объект Range, чтобы получить диапазон с тем же адресом, состоящий из отдельных ячеек. Use_expression_.Cells, where expression is an expression that returns a Range object, to obtain a range with the same address consisting of single cells. В таком диапазоне отдельные ячейки доступны с помощью синтаксиса Item(строка, столбец) относительно левого верхнего угла первой области диапазона. On such a range, you access single cells via Item(row, column), where are relative to the upper-left corner of the first area of the range. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. Item can be omitted since the call is forwarded to it by the default member of Range. В следующем примере на первом листе активной книги в ячейках C5 и D5 указывается формула. The following example sets the formula for cell C5 and D5 of the first sheet of the active workbook.

Читайте также:  Трейнер для асфальт 8

Чтобы вернуть объект Range, используйте синтаксис Range ( ячейка1, ячейка2 ), где ячейка1 и ячейка2 — это объекты Range, указывающие начальную и конечную ячейки. Use Range (cell1, cell2), where cell1 and cell2 are Range objects that specify the start and end cells, to return a Range object. В следующем примере устанавливается тип линии границы для ячеек A1:J10. The following example sets the border line style for cells A1:J10.

Имейте в виду, что точка перед каждым появлением свойства Cells является обязательной, если результат предыдущего оператора With нужно применять к свойству Cells. Be aware that the period in front of each occurrence of the Cells property is required if the result of the preceding With statement is to be applied to the Cells property. В данном случае указано, что ячейки расположены на листе один (без точки свойство Cells будет возвращать ячейки активного листа). In this case, it indicates that the cells are on worksheet one (without the period, the Cells property would return cells on the active sheet).

Чтобы получить диапазон, содержащий все строки листа, используйте свойство Rows на листе. Use Rows on a worksheet to obtain a range consisting all rows on the worksheet. Вы можете обращаться к отдельным строкам с помощью синтаксиса Item(строка), где строка — это индекс строки. You can access single rows via Item(row), where row is the row index. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. Item can be omitted since the call is forwarded to it by the default member of Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из строк. It is not legal to provide the second parameter of Item for ranges consisting of rows. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells. You first have to convert it to single cells via Cells.

В следующем примере удаляются строки 4 и 10 первого листа активной книги. The following example deletes row 4 and 10 of the first sheet of the active workbook.

Чтобы получить диапазон, содержащий все столбцы листа, используйте свойство Columns на листе. Use Columns on a worksheet to obtain a range consisting all columns on the worksheet. Вы можете обращаться к отдельным столбцам с помощью синтаксиса Item(строка) [sic], где строка — это индекс столбца в виде числа или адреса столбца в формате А1. You can access single columns via Item(row) [sic], where row is the column index given as a number or as an A1-style column address. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. Item can be omitted since the call is forwarded to it by the default member of Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из столбцов. It is not legal to provide the second parameter of Item for ranges consisting of columns. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells. You first have to convert it to single cells via Cells.

В следующем примере удаляются столбцы B, C, E и J первого листа активной книги. The following example deletes column "B", "C", "E", and "J" of the first sheet of the active workbook.

Используйте синтаксис_выражение_.Rows, где выражение возвращает объект Range, чтобы получить диапазон, состоящий из строк первой области диапазона. Use_expression_.Rows, where expression is an expression that returns a Range object, to obtain a range consisting of the rows in the first area of the range. Вы можете обращаться к отдельным строкам с помощью синтаксиса Item(строка), где строка — это относительный индекс строки от верхнего края первой области диапазона. You can access single rows via Item(row), where row is the relative row index from the top of the first area of the range. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. Item can be omitted since the call is forwarded to it by the default member of Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из строк. It is not legal to provide the second parameter of Item for ranges consisting of rows. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells. You first have to convert it to single cells via Cells.

В следующем примере удаляются диапазоны C8:D8 и C6:D6 первого листа активной книги. The following example deletes the ranges C8:D8 and C6:D6 of the first sheet of the active workbook.

Используйте синтаксис_выражение_.Columns, где выражение возвращает объект Range, чтобы получить диапазон, состоящий из столбцов первой области диапазона. Use_expression_.Columns, where expression is an expression that returns a Range object, to obtain a range consisting of the columns in the first area of the range. Вы можете обращаться к отдельным столбцам с помощью синтаксиса Item(строка) [sic], где строка — это относительный индекс столбца от левого края первой области диапазона, указанный в виде числа или адреса столбца в формате A1. You can access single columns via Item(row) [sic], where row is the relative column index from the left of the first area of the range given as a number or as an A1-style column address. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. Item can be omitted since the call is forwarded to it by the default member of Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из столбцов. It is not legal to provide the second parameter of Item for ranges consisting of columns. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells. You first have to convert it to single cells via Cells.

Читайте также:  Что нужно для подключения компьютера к сети

В следующем примере удаляются диапазоны L2:L10, G2:G10, F2:F10 и D2:D10 первого листа активной книги. The following example deletes the ranges L2:L10, G2:G10, F2:F10 and D2:D10 of the first sheet of the active workbook.

Чтобы вернуть диапазон с указанным смещением относительно другого диапазона, используйте синтаксис Offset ( строка, столбец ), где строка и столбец — это смещения строк и столбцов. Use Offset (row, column), where row and column are the row and column offsets, to return a range at a specified offset to another range. В следующем примере выделяются ячейки, расположенные на три строки вниз и на один столбец вправо от ячейки в левом верхнем углу текущего выделенного фрагмента. The following example selects the cell three rows down from and one column to the right of the cell in the upper-left corner of the current selection. Нельзя выбрать ячейку, которая находится не на активном листе, поэтому сначала необходимо активировать лист. You cannot select a cell that is not on the active sheet, so you must first activate the worksheet.

Используйте синтаксис Union ( диапазон1, диапазон2, . ) для возврата диапазонов из нескольких областей, то есть диапазонов, состоящих из двух или более смежных блоков ячеек. Use Union (range1, range2, . ) to return multiple-area ranges—that is, ranges composed of two or more contiguous blocks of cells. В следующем примере создается объект, определенный как объединение диапазонов A1:B2 и C3:D4, а затем выбирается определенный диапазон. The following example creates an object defined as the union of ranges A1:B2 and C3:D4, and then selects the defined range.

При работе с выделенными фрагментами, содержащими несколько областей, удобно применять свойство Areas. If you work with selections that contain more than one area, the Areas property is useful. Оно разделяет выделенный фрагмент с несколькими областями на отдельные объекты Range, а затем возвращает объекты в виде коллекции. It divides a multiple-area selection into individual Range objects and then returns the objects as a collection. Вы можете использовать свойство Count в возвращенной коллекции, чтобы убедиться, что выделение содержит более одной области, как показано в следующем примере. You can use the Count property on the returned collection to verify a selection that contains more than one area, as shown in the following example.

В этом примере используется метод AdvancedFilter объекта Range для создания списка уникальных значений, а также количества появлений этих уникальных значений в диапазоне столбца A. This example uses the AdvancedFilter method of the Range object to create a list of the unique values, and the number of times those unique values occur, in the range of column A.

Методы Methods

Свойства Properties

См. также See also

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

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

В иерархии Excel объект Range (диапазон) идет сразу после объекта worksheet. Объект Range является одним из ключевых объектов VBA. Объект Selection (выбор) возникает в VBA двояко — либо как результат работы метода Select, либо при вызове свойства selection. Тип получаемого объекта зависит от типа выделенного объекта. Чаще всего объект Selection принадлежит классу Range и при работе с ним можно использовать свойства и методы объекта Range. Интересной особенностью объектов Range и selection является то, что они не являются элементами никакого семейства объектов.

Адресация ячеек

При работе с объектом Range необходимо помнить, как в Excel ссылаются на ячейку рабочего листа. Имеются два способа ссылки на ячейки рабочего листа: относительная адресация (т. е. когда начало координат, задающее нумерацию строк и столбцов, связывается с объектом, вызвавшим Range) и абсолютная адресация.

Имя ячейки состоит из имени столбца (их 256 — А, В, . Z, АВ, . HZ, IA, . IV) и номера (1, . 16384).

Адресация задается индексом строки и индексом столбца. Например, R1C1, R2C3

Признаком абсолютной адресации является знак "$", предшествующий имени строки (абсолютной адресации на строку) или столбца (абсолютной адресации на столбец). Например, $А10, А$10 и $А$10 задают абсолютную адресацию на столбец А, строку 10 и ячейку А10 соответственно

Указывается смещение по отношению к активной ячейке. Смещение приводится в квадратных скобках, причем знак указывает на направление смещения. Например, если активной ячейкой является касз, то R[i]C[-1] дает ссылку на ячейку кзс2

Адресация ячейки рабочего листа является лишь частью полного адреса ячейки, который в общем случае включает имя рабочего листа и адрес книги. При задании полного адреса за именем листа следует знак "!", а адрес книги заключается в скобки. Например,

В первой строке данного примера дана относительная ссылка на ячейку AI активного рабочего листа, во второй — на ячейку AI рабочего листа листа активной книги, а в третьей на ячейку AI рабочего листа лист2 книги моякнига-xls текущего рабочего каталога.

Задание групп строк и столбцов с помощью объекта Range

Если в диапазоне указываются только имена столбцов или строк, то объект Range задает диапазон, состоящий из указанных столбцов или строк. Например, Range ("А: с") задает диапазон, состоящий из столбцов А, в и с, а Range <"2: 2") — из второй строки. Другим способом работы со строками и столбцами являются методы ROWS (строки) и Columns (столбцы), возвращающие коллекции строк и столбцов. Например, столбцом А является columns (1), а второй строкой — ROWS (2).

Связь объекта Range и свойства Cells

Так как ячейка является частным случаем диапазона, состоящим только из единственной ячейки, объект Range также позволяет работать с ней. Объект cells (ячейки) — это альтернативный способ работы с ячейкой. Например, ячейка А2 как объект описывается Range ("A2") или cells (1,2). В свою очередь объект ceils, вкладываясь в Range, также позволяет записывать диапа зон в альтернативном виде, который иногда удобен для работы, а именно,

Range ("А2:C3") И Range(Cells(1,2), Cells(3,3))

Определяют один и тот же диапазон.

Свойства и методы объекта Range

Объект Range позволяет сочетать гибкость VBA и мощь рабочего листа Excel. Более 400 встроенных функций рабочего листа существенно упрощают и делают более наглядным программирование на VBA.

Читайте также:  Для чего нужна файловая система

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

Перечислим основные свойства объекта Range.

Возвращает значение из ячейки или в ячейки диапазона. В данном примере переменной х присваивается значение из ячейки C1 :

х = Range ("C1") .Value В следующем примере в диапазон AI : В2 введена 1 :

Range ("A1:B2") .Value = 1

Возвращает имя диапазона. В данном примере диапазону А1:В2 присваивается имя итоги:

Range ( "Al :B2") .Name = "Итоги"

Возвращает число объектов в наборе. В данном примере переменной х присваивается значение, равное числу строк диапазона AI : В2 :

х = Range ( "Al :B2") .Rows . Count

Возвращает число строк текущего диапазона. Текущим является диапазон, ограниченный пустыми строками и столбцами и содержащий данный элемент. В следующем примере переменной у присваивается значение, равное числу строк в текущем диапазоне, содержащем ячейку AI :

у = Range ( "Al" ). CurrentRegion. Rows . Count

Позволяет переносить текст при вводе в диапазон. Допустимые значения True и False. В следующем примере в ячейку В2 вводится текст длинный текст и в этой ; ячейке устанавливается режим ввода текста с переносом: With Range ("B2") .Value = "Длинный текст" .WrapText = True End With

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

ActiveCell . EntireRow. Clear ActiveCell .EntireColumn. Select

Возвращает ширину столбцов и высоту строк диапазона соответственно

Возвращает объект comment (примечание), который связан с левым верхним углом диапазона при отображении на экране. Объект comment является элементом семейства comments. Метод AddComment, примененный к диапазону, создает новое примечание. Среди методов объекта comment отметим только метод Text, который задает текст, выводимый в примечании. Синтаксис:

Text (Text, Start, Overwrite)

.Text Text:= "Чрезвычайно важно!" & Chr(10) & "Про это никак нельзя забыть ! "

.Visible = True End With

Рис. 2.1. Пример отображения примечания на рабочем листе

Возвращает объект Font (шрифт). Объект Font имеет следующие свойства:

Присвоение диапазона ячеек объектной переменной в VBA Excel. Адресация ячеек в переменной диапазона и работа с ними. Определение размера диапазона. Примеры.

Присвоение диапазона ячеек переменной

Чтобы переменной присвоить диапазон ячеек, она должна быть объявлена как Variant, Object или Range:

Чтобы было понятнее, для чего переменная создана, объявляйте ее как Range.

Присваивается переменной диапазон ячеек с помощью оператора Set:

В выражении Range(Cells(3, 4), Cells(26, 18)) вместо чисел можно использовать переменные.

Для присвоения диапазона ячеек переменной можно использовать встроенное диалоговое окно Application.InputBox, которое позволяет выбрать диапазон на рабочем листе для дальнейшей работы с ним.

Адресация ячеек в диапазоне

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

Индексация ячеек в присвоенном диапазоне осуществляется слева направо и сверху вниз, например, для диапазона размерностью 5х5:

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

Индексация строк и столбцов начинается с левой верхней ячейки. В диапазоне этого примера содержится 5 строк и 5 столбцов. На пересечении 2 строки и 4 столбца находится ячейка с индексом 9. Обратиться к ней можно так:

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

обращение к первой строке присвоенного диапазона размерностью 5х5:

и обращение к первому столбцу присвоенного диапазона размерностью 5х5:

Работа с диапазоном в переменной

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

равнозначны. В обоих случаях информационное сообщение MsgBox выведет значение ячейки с индексом 6.

Важно: если вы планируете работать только со значениями, используйте переменные массивов, код в них работает значительно быстрее.

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

Пример 1 — работа со значениями

Скопируйте процедуру в программный модуль и запустите ее выполнение.

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

Пример 2 — работа с форматами

Продолжаем работу с тем же диапазоном рабочего листа «C6:E8»:

Опять же, обратите внимание, что все изменения форматов в присвоенном диапазоне отобразились на рабочем листе, несмотря на то, что мы непосредственно с ячейками рабочего листа не работали.

Пример 3 — копирование и вставка диапазона из переменной

Значения ячеек диапазона, присвоенного переменной, передаются в другой диапазон рабочего листа с помощью оператора присваивания.

Скопировать и вставить диапазон полностью со значениями и форматами можно при помощи метода Copy, указав место вставки (ячейку) на рабочем листе.

В примере используется тот же диапазон, что и в первых двух, так как он уже заполнен значениями и форматами.

Информационное окно MsgBox добавлено, чтобы вы могли увидеть работу процедуры поэтапно, если решите проверить ее в своей книге Excel.

Размер диапазона в переменной

При получении диапазона с помощью метода Application.InputBox и присвоении его переменной диапазона, бывает полезно узнать его размерность. Это можно сделать следующим образом:

Запустите процедуру, выберите на рабочем листе Excel любой диапазон и нажмите кнопку «OK». Информационное сообщение выведет количество строк и столбцов в диапазоне, присвоенном переменной myRange.

VBA Excel. Переменная диапазона ячеек (As Range) : 4 комментария

Добрый день! Подскажите пожалуйста, как можно задать диапазон (например всего одну строку) для поиска Cells.find.

Привет, Иван!
Для второй строки: Rows(2).Find(stroka)
Для диапазона: Range("A2:G10").Find(stroka)
stroka — это переменная или искомый текст в прямых кавычках.

Добрый день, можете, пожалуйста, подсказать?
У меня есть книга Excel, мне нужно создать макрос, который мог бы при определённых значениях ячеек делать заливку, т.е. у меня есть таблица, в ней стоят месяца и т.п. и есть значения (Т,А,С): ячейки, где стоят Т, должны быть зелёного цвета; Где А-красного; Где С -жёлтого, и как это можно растянуть на всю книгу

Добрый день, Антон!
В этом случае можно обойтись без макроса. Попробуйте использовать условное форматирование. Только правила задавайте не для всей или части строки, а для конкретного столбца, в котором будут находиться ячейки с искомыми значениями.

Ссылка на основную публикацию
Файлы mdi чем открыть
Если вы не смогли открыть файл двойным нажатием на него, то вам следует скачать и установить одну из программ представленных...
Украли сумку с документами что делать
В связи с угрозой распространения на территории Российской Федерации коронавирусной инфекции приостановлен личный прием граждан в судах. Смотреть как изолируются...
Ультра исо вам необходимо иметь права администратора
Очень многие пользователи, когда им нужно сделать загрузочную флешку Windows или с дистрибутивом другой операционной системы, прибегают к использованию программы...
Файлы mdx чем открыть
MDX - это формат образов дисков, который был создан разработчиками программы DAEMON Tools. Это формат был создан в результате усовершенствования...
Adblock detector