Excel VBA中对形状的选择和操作
Shapes对象是指定工作表上的所有Shape对象的集合。
- 使用Shapes属性可返回Shapes集合
Worksheets(1).Shapes.SelectAll
' ↑ 选定工作表一上的所有形状。
- 使用Shapes(index)可返回一个Shape对象。index是形状的名称或索引号。
Worksheets(1).Shapes(1).Fill.PresetGradient msoGradientHorizontal, 1, msoGradientBrass
' ↑ 设置工作表一上形状一的预设阴影的填充。
- 使用Shapes.Range(Index)可返回一个ShapesRange集合,该集合代表Shapes集合的一个子集。index是形状的名称或索引号。
Worksheets(1).Shapes.Range(Array(1, 3)).Fill.Patterned msoPatternHorizontalBrick
' ↑ 设置工作表一上形状一和形状三的填充图案。
- 形状名称和代码名称:形状名称是在工作表中选定该控件时名称框中显示的名称;代码名称时在VBA界面属性窗口中的名称。新增添加控件时形状名称和代码名称是一致的默认名称(例如ChechBox1),但后续更改一个的话、另一个不会自动同步改变。在事件过程中必须使用代码名称,在选择控件时必须使用形状名称。
Shape对象代表绘图层中的对象。例如自选图形、任意多边形、OLE对象或图片。
- 使用Selection.ShapeRange(index)可返回选定区域中的形状的Shape对象。
Worksheets(1).Shapes(1).Flip msoFlipHorizontal
' ↑ 将工作表一上的形状一进行水平翻转。
Worksheets(1).Shapes("Rectangle 1").Flip msoFlipHorizontal
' ↑ 将工作表一上的名为“Rectangle 1”的形状进行水平翻转。
ActiveWindow.Selection.ShapeRange(1).Fill.ForeColor.RGB = RGB(255, 0, 0)
' ↑ 设置活动窗口内选定区域中的第一个形状的填充格式,假定至少选定了一个形状。
- 使用Name属性可以返回或设置形状的名称。操作中发现可以给多个形状起相同的名字,后续通过名字选择和操作的时候只会针对第一个命名的那个形状。
With Worksheets(1).Shapes.AddShape(msoShapeRectangle, 144, 144, 72, 72)
' ↑ 在工作表一中添加一个矩形
.Name = "Red Square"' ↑ 将其命名为“Red Squre”
.Fill.ForeColor.RGB = RGB(255, 0, 0)' ↑ 为其设置前景色
.Line.DashStyle = msoLineDashDot' ↑ 为其设置线条样式
End With