Shapes.Range 属性 (Excel)

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

语法

表达式范围 (索引)

expression:一个表示 Shapes 对象的变量。

参数

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

备注

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

若要指定 索引 的整数或字符串的数组,可以使用 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 中第一个形状和第三个形状的填充图案。

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

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