在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
发表评论