打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel实战技巧98:使用VBA在工作表中添加ActiveX控件

excelperfect

一些情形下,我们需要在工作表中使用ActiveX控件,这通常使用VBA来实现。

要使用VBA从控件工具箱(ActiveX控件)中添加控件,可以使用OLEObjects集合的Add方法。该方法包含有大量的参数,包括ClassType、Top、Left、Width和Height等参数。

其中,参数ClassType代表的一些常见的ActiveX控件的名称如下:

Forms.Checkbox.1(复选框)

Forms.Combobox.1(组合框)

Forms.Optionbutton.1(选项按钮)

Forms.Textbox.1(文本框)

Forms.Listbox.1(列表框)

Forms.Commandbutton.1(命令按钮)

下面通过一个例子,提供在工作表中添加ActiveX控件的思路。

如下图1所示,要求在每项工作前面都添加复选框,并且当用户选中复选框后,自动隐藏该复选框所在的行。

图1

下面的代码用来在工作表中添加复选框:

Sub RefreshList() Dim oCheck As OLEObject Dim rCell As Range, rRange As Range Dim lLastRow As Long '清除已经存在于工作表中的复选框 For Each oCheck In Sheet1.OLEObjects oCheck.Delete Next oCheck lLastRow = Sheet1.Range('B' &Cells.Rows.Count).End(xlUp).Row Set rRange = Sheet1.Range('B2:B'& lLastRow) For Each rCell In rRange rCell.RowHeight = 14 WithSheet1.OLEObjects.Add(ClassType:='Forms.Checkbox.1', _ Top:=rCell.Top,Left:=rCell.Offset(0, -1).Left, _ Height:=rCell.Height,Width:=rCell.Offset(0, -1).Width) .Object.Caption = '' .LinkedCell = rCell.Offset(0,-1).Address .Object.Value = False End With Next rCell End Sub

上述代码首先删除工作表中所有已存在的复选框,因为本示例已知道工作表中无其他控件,所以直接删除,如果无法判断是否有其他控件而只需删除复选框,可以加上一个条件判断语句:

If TypeName(oCheck.Object)=”CheckBox” Then

这样,仅删除复选框。

接下来,在确定数据范围后,在第一列添加复选框并设置了一些属性值以方便以后操作。这里,有一些通用的适合于其他控件的属性,也有一些专属于复选框的属性。

下面的代码用于隐藏复选框选中后的行:

Sub HideRows() Dim rCell As Range, rRange As Range Dim lLastRow As Long lLastRow = Sheet1.Range('B' &Cells.Rows.Count).End(xlUp).Row Set rRange = Sheet1.Range('B2:B'& lLastRow) For Each rCell In rRange If rCell.Offset(0, -1).Value Then rCell.EntireRow.Hidden = True End If Next rCell End Sub

上述代码遍历设定区域的每行并隐藏已复选的行,如下图2所示。

图2

注意,你需要将上述代码关联到相应的控件或命令按钮以执行代码。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
excel窗体和控件工具箱
向工作表中添加复选框、选项按钮或切换按钮
如何使用 Excel 中的工作表窗体控件
【从零学学VBA5】表单控件(2003版本中称之为“窗体控件”)和ActiveX控件有何区别?
Excel中的控件(1)
利用Word控件,轻松制作填空、单选和多选题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服