VBA实用小程序50: 在指定的单元格中插入指定的形状

2019-07-19 14:32:10 浏览数 (1)

学习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 
vba

0 人点赞