Бөлісу құралы:


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

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

Синтаксис

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

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

Параметры

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

Замечания

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

Чтобы указать массив целых чисел или строк для 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

Пример

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

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

В этом примере задается шаблон заливки для фигур с именами 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 и обратная связь.