在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


发表评论