如何用vba设置表单控件、窗体控件的各种属性?

在excel工作表中可以插入两种控件,分别是表单控件(也叫做窗体控件)和ActiveX控件,如下图所示:

表单控件(也叫做窗体控件)可以直接链接excel单元格区域,如下图所示,在excel工作表中插入列表框表单控件(也叫做窗体控件):

由于表单控件也属于Shape对象,其对应的MsoShapeType为msoFormControl(8),如果要通过vba操作控制表单控件,可以使用Shape对象进行操作。

其中上图中的“数据源区域”、“单元格链接”、“选定类型”、“三维阴影”等都属于Shape对象的ControlFormat属性。

因此,要通过vba操作表单控件,可以使用如下的代码:

Sub QQ1722187970()
    Dim oSP As Shape
    For Each oSP In Sheet1.Shapes
      With oSP
        '如果是表单控件
        If .Type = msoFormControl Then
            With oSP.ControlFormat
                '数据源区域
                .ListFillRange = "$C$1:$C$15"
                '单元格链接
                .LinkedCell = "$B$1"
                '下拉显示的项目
                .DropDownLines = 10
            End With
        End If
      End With
    Next
End Sub

如果要用vba在excel工作表中自动插入表单控件,可以使用Shapes对象的AddFormControl方法,代码如下:

Sub QQ1722187970()
    Dim oSP As Shape
    Set oSP = Sheet1.Shapes.AddFormControl(xlListBox, 0, 0, 100, 100)
    With oSP.ControlFormat
        .AddItem 1
        .AddItem 2
        .AddItem 3
    End With
End Sub
       

发表评论