应用于 CanvasShapes、GroupShapes 和 Shapes 对象的 Range 方法。
返回一个 ShapeRange 对象。
expression.Range(Index)
expression 必需。该表达式返回以上一个对象。
Index Variant 类型,必需。指定在该范围中包含哪一个图形。可以是一个整数,用以指定在 Shapes 集合中某个图形的索引号;也可以是指定图形名称的字符串;或者是包含整数或字符串的 Variant 数组。
在文档的开头从 0 开始的字符位置值。计数所有字符,包括非打印字符。隐藏字符也在计数之内,即使该字符并不显示出来。如果不为 Range 方法指定开始和结束字符位置,则将整篇文档作为一个 Range 对象返回。
ShapeRange 对象不包含 InlineShape 对象。一个 InlineShape 对象相当于一个字符,并像字符一样位于一定文字区域中。用 Shape 对象锁定一定区域的文字(默认情况下是锁定所选内容),但这些对象可以位于该页的任何位置。Shape 对象总是与锁定区域处于同一页。
对 Shape 对象进行的大部分有效操作也适用于只包含一个图形的 ShapeRange 对象。有些操作如果用于包含多个图形的 ShapeRange 对象,则会产生错误。
本示例为活动文档中的前 10 个字符设置加粗格式。
Sub DocumentRange()
ActiveDocument.Range(Start:=0, End:=10).Bold = True
End Sub
本示例创建一个区域,该区域的起点位于活动文档的开始处,终点位于光标的位置,然后将该区域内的所有字符转换为大写。
Sub DocumentRange2()
Dim r As Range
Set r = ActiveDocument.Range(Start:=0, End:=Selection.End)
r.Case = wdUpperCase
End Sub
本示例创建并设置 myRange
变量,使其包含活动文档的第三到第六段,然后右对齐该区域中的段落。
Sub DocumentRange3()
Dim aDoc As Document
Dim myRange As Range
Set aDoc = ActiveDocument
If aDoc.Paragraphs.Count >= 6 Then
Set myRange = aDoc.Range(aDoc.Paragraphs(2).Range.Start, _
aDoc.Paragraphs(4).Range.End)
myRange.Paragraphs.Alignment = wdAlignParagraphRight
End If
End Sub
当应用于 CanvasShapes、GroupShapes 和 Shapes 对象时。
本示例将活动文档第一个图形的填充前景色设置为紫色。
Sub ShRange()
With ActiveDocument.Shapes.Range(1).Fill
.ForeColor.RGB = RGB(255, 0, 255)
.Visible = msoTrue
End With
End Sub
本示例为活动文档中变量图形应用阴影。
Sub ShpRange2(strShpName As String)
ActiveDocument.Shapes.Range(strShpName).Shadow.Type = msoShadow6
End Sub
若要调用前一个子程序,请在标准代码模块中输入下列代码。
Sub CallShpRange2()
Dim shpArrow As Shape
Dim strName As String
Set shpArrow = ActiveDocument.Shapes.AddShape(Type:=msoShapeLeftArrow, _
Left:=200, Top:=400, Width:=50, Height:=75)
shpArrow.Name = "myShape"
strName = shpArrow.Name
ShpRange2 strShpName:=strName
End Sub
本示例选定活动文档的第一和第三个图形。
Sub SelectShapeRange()
ActiveDocument.Shapes.Range(Array(1, 3)).Select
End Sub
本示例选定并删除活动文档第一个图形中的所有图形。本示例假定第一个图形是画布图形。
Sub CanvasShapeRange()
Dim rngCanvasShapes As Range
Set rngCanvasShapes = ActiveDocument.Shapes(1).CanvasItems.Range(1)
rngCanvasShapes.Select
rngCanvasShapes.Delete
End Sub