Свойство Range.Item (Excel)
Возвращает объект Range, представляющий диапазон со смещением относительно указанного диапазона.
Синтаксис
expression. Item (RowIndex, ColumnIndex)
выражение: переменная, представляющая объект Range.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
RowIndex | Обязательный | Variant | Если указан второй аргумент, относительный номер строки возвращаемой ячейки. Если второй аргумент не указан, индекс возвращаемого поддиапапа. |
ColumnIndex | Необязательный | Variant | Относительный номер столбца возвращаемой ячейки. |
Замечания
Если выражение не является диапазоном, содержащим коллекцию отдельных ячеек, например из-за того, что оно было получено с помощью элемента Columns , предоставление второго аргумента является недопустимым и приведет к ошибке 1004.
Элемент range по умолчанию переадресовывает вызовы с параметрами к элементу Item . Таким образом, someRange(1)
и someRange(1,1)
эквивалентны someRange.Item(1)
и someRange.Item(1,1)
соответственно.
Аргументы RowIndex и ColumnIndex представляют собой относительные смещения на основе 1 к верхней левой ячейке первой области диапазона, возвращаемой элементом Areas , т. е. для диапазона Union(someSheet.Range("Z4:AA6"), someSheet.Range("A1:C3"))
возвращает Item(1,1)
диапазон с адресом $Z$4.
ColumnIndex можно предоставить либо в виде числового индекса, либо в виде строки адреса столбца, как в нотации A1, т. е. "A"
относится к числовой индексу 1
и "AA"
к 27
.
Можно ссылаться на ячейки за пределами исходного диапазона с помощью свойства Item , указав соответствующие аргументы, например Item(3,3)
возвращает ячейку в "D4"
для диапазона someSheet.Range("B2:C3")
.
Диапазон, возвращаемый при указании только одного параметра, зависит от характера диапазона:
Для диапазонов, состоящих из отдельных ячеек, возвращаемых элементами Cells и Range , Item возвращает отдельные ячейки. Параметр RowIndex ссылается на индекс при перечислении первой области диапазона слева направо, чем сверху вниз, как для двухдиментных массивов. Если RowIndex больше, чем количество ячеек в первой области диапазона, перечисление, как если бы область была расширена вниз.
Для диапазонов, состоящих из диапазонов строк, возвращаемых строками, элемент возвращает диапазоны строк. Параметр RowIndex — это смещение на основе 1 от первой строки диапазона в направлении сверху вниз.
Для диапазонов, состоящих из диапазонов столбцов, возвращаемых столбцами, элемент возвращает диапазоны столбцов. Параметр RowIndex — это смещение на основе 1 от первого столбца в направлении слева направо. В этой ситуации индекс может быть также указан в виде строки адреса столбца.
Пример
В следующем примере показано, какая ячейка возвращается, если указаны оба параметра.
Public Sub PrintAdresses()
Dim exampleRange As Excel.Range
With ThisWorkbook.Worksheets("ExampleSheet")
Set exampleRange = Application.Union(.Range("B2:D4"), .Range("A1"), .Range("Z1:AA20"))
End With
Debug.Print exampleRange.Item(1,1).Address 'Prints "$B$2"
Debug.Print exampleRange.Item(2,4).Address 'Prints "$E$3"
Debug.Print exampleRange.Item(20,40).Address 'Prints "$AO$21"
Debug.Print exampleRange.Item(2,"D").Address 'Prints "$E$3"
Debug.Print exampleRange.Item(20,"AN").Address 'Prints "$AO$21"
End Sub
В следующем примере для разных типов диапазонов показано, какие поддиапазоны возвращаются, если указан только один параметр.
Public Sub PrintAdresses()
Dim exampleRange As Excel.Range
With ThisWorkbook.Worksheets("ExampleSheet")
Set exampleRange = Application.Union(.Range("B2:D4"), .Range("A1"), .Range("Z1:AA20"))
End With
Debug.Print exampleRange.Cells.Item(1).Address 'Prints "$B$2"
Debug.Print exampleRange.Cells.Item(2).Address 'Prints "$C$2"
Debug.Print exampleRange.Cells.Item(4).Address 'Prints "$B$3"
Debug.Print exampleRange.Cells.Item(10).Address 'Prints "$B$5"
Debug.Print exampleRange.Rows.Item(1).Address 'Prints "$B$2:$D$2"
Debug.Print exampleRange.Rows.Item(10).Address 'Prints "$B$11:$D$11"
Debug.Print exampleRange.Columns.Item(1).Address 'Prints "$B$2:$B$4"
Debug.Print exampleRange.Columns.Item(10).Address 'Prints "$K$2:$K$4"
Debug.Print exampleRange.Columns.Item("A").Address 'Prints "$B$2:$B$4"
Debug.Print exampleRange.Columns.Item("J").Address 'Prints "$K$2:$K$4"
End Sub
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.