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