Поделиться через


Свойство 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 и обратная связь.