学习Excel技术,关注微信公众号:
excelperfect
下面的自定义函数使用Shapes集合对象的AddShape方法及其参数,可以在指定的单元格中插入指定的形状。
代码语言:javascript复制Function AddShapeToRange( _
ShapeType As MsoAutoShapeType, _
sAddress As String) As Shape
With ActiveSheet.Range(sAddress)
Set AddShapeToRange = _
ActiveSheet.Shapes.AddShape( _
ShapeType, _
.Left, .Top, .Width, .Height)
End With
End Function
代码中的参数ShapeType指定形状的类型,可以是1至137、139至183之间的任意数字,这些数字代表不同的形状。当然,也可以使用内置常量名,例如msoShapeRectangle代表矩形。
参数sAddress指定要添加形状的单元格,字符串形式,例如要在单元格B3中添加形状,则指定参数sAddress的值为B3。
示例
如下图1所示的工作表,列A中是代表形状的常量名,列B中是对应的常量值。
图1
下面的代码在列C中添加对应的形状:
代码语言:javascript复制Sub AddShape()
Dim shp As Shape
Dim rng As Range
For Each rng In Range("B2:B184")
Set shp = AddShapeToRange(rng.Value,"C" & rng.Row)
Next rng
End Sub