首页 > 技术文章 > Excel VBA中对形状的选择和操作

phoebeland 2017-11-10 14:44 原文

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

推荐阅读