GroupShapes.Range 属性 (Excel)

返回一个代表 Shapes 集合中的形状子集的 ShapeRange 对象。

语法

表达式范围 (索引)

表达 一个代表 GroupShapes 对象的变量。

参数

名称 必需/可选 数据类型 说明
Index 必需 Variant 包含在该区域中的各单个形状。 可以是指定形状索引号的整数、指定形状名称的字符串,也可以是包含整数或字符串的数组。

备注

虽然可以使用 Range 属性返回任意数量的形状,但如果只想返回集合的单个成员,则使用 Item 方法会更简单。 例如, Shapes(1)是比 Shapes.Range(1)更简单。

示例

此示例设置 myDocument 中第一个形状和第三个形状的填充图案。

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

若要指定 索引 的整数或字符串的数组,可以使用 Array 函数。 例如,下列指令返回由名称指定的两个形状。

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

在 Microsoft Excel 中,不能用此属性返回包含工作表上的所有 Shape 对象的 ShapeRange 对象。 请改用以下代码。

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

本示例设置 myDocument 上名为“椭圆 4”和“矩形 5”的形状的填充图案。

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 支持和反馈,获取有关如何接收支持和提供反馈的指南。