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


Свойство GroupShapes.Range (Excel)

Возвращает объект ShapeRange , представляющий подмножество фигур в коллекции Shapes .

Синтаксис

expression. Диапазон (индекс)

Выражение Переменная, представляющая объект GroupShapes .

Параметры

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

Замечания

Хотя свойство Range можно использовать для возврата любого количества фигур, проще использовать метод Item , если требуется вернуть только один член коллекции. Например, проще, Shapes(1) чем Shapes.Range(1).

Пример

В этом примере задается шаблон заливки для фигур один и три в myDocument.

Set myDocument = Worksheets(1) 
myDocument.Shapes.Range(Array(1, 3)) _ 
 .Fill.Patterned msoPatternHorizontalBrick

Чтобы указать массив целых чисел или строк для index, можно использовать функцию Array . Например, следующая инструкция возвращает две фигуры, указанные по имени.

Dim arShapes() As Variant 
Dim objRange As Object 
arShapes = Array("Oval 4", "Rectangle 5") 
Set objRange = ActiveSheet.Shapes.Range(arShapes) 
 

В Microsoft Excel это свойство нельзя использовать для возврата объекта ShapeRange , содержащего все объекты Shape на листе. Вместо этого используйте следующий код.

Worksheets(1).Shapes.SelectAll ' select all shapes 
set sr = Selection.ShapeRange ' create ShapeRange 
 

В этом примере задается шаблон заливки для фигур с именами Oval 4 и Rectangle 5 в myDocument.

Dim arShapes() As Variant 
Dim objRange As Object 
Set myDocument = Worksheets(1) 
arShapes = Array("Oval 4", "Rectangle 5") 
Set objRange = myDocument.Shapes.Range(arShapes) 
objRange.Fill.Patterned msoPatternHorizontalBrick

В этом примере задается шаблон заливки для фигуры в myDocument.

Set myDocument = Worksheets(1) 
Set myRange = myDocument.Shapes.Range(1) 
myRange.Fill.Patterned msoPatternHorizontalBrick

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

Set myDocument = Worksheets(1) 
With myDocument.Shapes 
 numShapes = .Count 
 If numShapes > 1 Then 
 numAutoShapes = 1 
 ReDim autoShpArray(1 To numShapes) 
 For i = 1 To numShapes 
 If .Item(i).Type = msoAutoShape Then 
 autoShpArray(numAutoShapes) = .Item(i).Name 
 numAutoShapes = numAutoShapes + 1 
 End If 
 Next 
 If numAutoShapes > 1 Then 
 ReDim Preserve autoShpArray(1 To numAutoShapes) 
 Set asRange = .Range(autoShpArray) 
 asRange.Distribute msoDistributeHorizontally, False 
 End If 
 End If 
End With

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

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