loading...


loading...


公告
loading...

Google 全球搜索 本站搜索
我的分类(专题)
loading...

日志更新
loading...

最新评论
loading...

留言板
loading...

链接

Blog信息
loading...




Google 网上论坛 Beta 版
订阅 excelblogger
电子邮件:
访问此论坛





my e-mail:xhdsxfjy@163.com



ActiveX:使用VBA在工作表中添加ActiveX控件
fanjy 发表于 2008-9-27 13:21:00
要使用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(命令按钮)
下面举一个例子,提供一些思路,并供探讨。如下图所示,要求在每项工作前面都添加复选框,并且当用户选中复选框后,自动隐藏该复选框所在的行。
AddActiveXControlCheckbox1
下面的代码用来添加复选框:
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
        With Sheet1.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

上述代码遍历设定区域的每行并隐藏已复选的行。
AddActiveXControlCheckbox2
注:同时发表于完美Excel:http://www.excelperfect.com

阅读全文 | 回复(0) | 引用通告 | 编辑
 


  • 标签:ActiveX 复选框 VBA 
  • 发表评论:

      大名:
      密码:
      主页:
      标题:
      loading...


    fanjy的博客

    Powered by Oblog.