Shapes.Range 方法 (Publisher)

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

语法

表达式范围 (索引)

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

参数

名称 必需/可选 数据类型 说明
Index 必需 Variant 要包含在范围中的单个形状。 可以是一个整数,它指定形状、 一个字符串,指定形状的名称或包含整数或字符串的数组的索引数。 如果省略 Index则 Range 方法将返回指定集合中的所有对象。

返回值

ShapeRange

示例

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

Dim arrShapes As Variant 
Dim shpRange As ShapeRange 
 
Set arrShapes = Array("Oval 4", "Rectangle 5") 
Set shpRange = ActiveDocument.Pages(1) _ 
 .Shapes.Range(arrShapes)

以下示例设置了当前出版物中的第一个和第三个形状的填充图案。

ActiveDocument.Pages(1).Shapes.Range(Array(1, 3)).Fill _ 
 .Patterned msoPatternHorizontalBrick

以下示例为第一页上的名为"Oval 4"和"Rectangle 5"的形状设置填充图案。

Dim arrShapes As Variant 
Dim shpRange As ShapeRange 
 
arrShapes = Array("Oval 4", "Rectangle 5") 
 
Set shpRange = ActiveDocument.Pages(1).Shapes.Range(arrShapes) 
 
shpRange.Fill.Patterned msoPatternHorizontalBrick

以下示例为第一页上的所有形状设置填充图案。

ActiveDocument.Pages(1).Shapes _ 
 .Range.Fill.Patterned msoPatternHorizontalBrick

以下示例为第一页上的第一个形状设置填充图案。

Dim shpRange As ShapeRange 
 
Set shpRange = ActiveDocument.Pages(1).Shapes.Range(1) 
 
shpRange.Fill.Patterned msoPatternHorizontalBrick

以下示例创建一个包含第一页上所有自选图形的数组,并使用该数组定义形状范围,再将该范围内的所有形状水平分布。

Dim numShapes As Long 
Dim numAutoShapes As Long 
Dim autoShpArray As Variant 
Dim intLoop As Integer 
Dim shpRange As ShapeRange 
 
With ActiveDocument.Pages(1).Shapes 
 
 numShapes = .Count 
 If numShapes > 1 Then 
 
 numAutoShapes = 0 
 ReDim autoShpArray(1 To numShapes) 
 
 For intLoop = 1 To numShapes 
 If .Item(intLoop).Type = msoAutoShape Then 
 numAutoShapes = numAutoShapes + 1 
 autoShpArray(numAutoShapes) = .Item(intLoop).Name 
 End If 
 Next 
 
 If numAutoShapes > 1 Then 
 ReDim Preserve autoShpArray(1 To numAutoShapes) 
 Set shpRange = .Range(autoShpArray) 
 shpRange.Distribute _ 
 DistributeCmd:=msoDistributeHorizontally, _ 
 RelativeTo:=False 
 End If 
 
 End If 
 
End With

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。