Shapes 集合

         
多个对象
Shapes
多个对象

指定的工作表上的所有 Shape 对象的集合。每个 Shape 对象代表绘图层上的一个对象,如自选图形、任意多边形、OLE 对象或图片。

注意   如果要处理文档中所有图形的一个子集(例如,只对文档中的自选图形对象,或只对选定的图形执行一些操作),就必须构造一个包含要处理的图形的 ShapeRange 集合。有关如何处理单个图形或同时处理多个图形的概述,请参阅处理图形(绘图对象)

Shapes 集合用法

可用 Shapes 属性返回 Shapes 集合。下例选定 myDocument 上的所有图形。

Set myDocument = Worksheets(1)
myDocument.Shapes.SelectAll

注意   如果要同时对工作表上的所有图形进行某项操作(例如删除或设置属性),请选定所有图形,然后对选定区域应用 ShapeRange 属性以创建一个包含工作表上所有图形的 ShapeRange 对象,然后对 ShapeRange 对象应用适当的属性或方法。

可用 Shapes(index)(其中 index 是图形的名称或索引号)返回单个的 Shape 对象。下例设置 myDocument 上第一个图形的预设阴影的填充。

Set myDocument = Worksheets(1)
myDocument.Shapes(1).Fill.PresetGradient _
    msoGradientHorizontal, 1, msoGradientBrass

可用 Shapes.Range(index)(其中 index 是图形的名称或索引号或是它们的一个数组)返回 ShapeRange 集合,该集合代表 Shapes 集合的一个子集。下例设置 myDocument 上的第一个和第三个图形的填充图案。

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

说明

工作表中的 ActiveX 控件具有两个名称:一个是包含该控件的图形的名称(在查看该工作表时,将显示在“名称”框中),还有一个是该控件的代码名称(“属性”窗口中“(名称)”右边的单元格中)。当首次向工作表中添加控件时,图形名称和代码名称相同。但是,更改其中任何一个名称时,另一个名称并不会自动随之更改。

在控件事件过程名称中使用的是控件的代码名称,但是,当您从工作表的 ShapesOLEObjects 集合中返回控件时,必须使用图形名称而不是代码名称,只有这样才能通过名称引用控件。例如,假定要向工作表中添加一个复选框,其默认的图形名称和代码名称都是 CheckBox1。如果通过在“属性”窗口的“(名称)”旁边键入“chkFinished”而更改了控件代码名称,则在事件过程名称中必须使用 chkFinished,但是您仍然需要使用 CheckBox1 从 ShapesOLEObject 集合中返回控件,如下例所示。

Private Sub chkFinished_Click()
    ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1
End Sub