Excel) (Shapes 对象

指定工作表上所有 Shape 对象的集合。

备注

每个 Shape 对象都代表绘图层中的一个对象,如自选图形、任意多边形、OLE 对象或图片。

注意

如果要处理文档上形状的子集(例如,仅对文档上的自选图形或仅对所选形状执行某些操作),则必须构造包含要处理的形状的 ShapeRange 集合。

示例

使用 Worksheet 对象的 Shapes 属性可返回 Shapes 集合。 以下示例选择 myDocument 上的所有形状。

注意

如果要执行 (操作(如同时删除或设置对工作表上所有形状) 属性),请选择所有形状,然后使用所选内容的 ShapeRange 属性创建包含工作表上所有形状的 ShapeRange 对象,然后将相应的属性或方法应用于 ShapeRange 对象。

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

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

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

使用 Range (索引) ,其中 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

方法

属性

另请参阅

支持和反馈

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