Excel 2003,添加带复选框的内容

时间:2016-07-15 20:49:48

标签: excel vba checkbox

我使用VBA推测一个包含行的范围,每一行都有自己的复选框。

到目前为止代码看起来像这样:

    Dim objColumnHeadings As Range, objDBsheet As Worksheet
    Dim lngRow As Long, objCell As Range
    Dim objCheckbox As Object
    Set objDBsheet = getDBsheet()
    Set objColumnHeadings = objDBsheet.Range("ColumnHeadings")
    objColumnHeadings.ClearContents
    lngRow = 1
    For Each varExisting In objColumns
        objColumnHeadings.Cells(lngRow, 1).Value = varExisting
        Set objCell = objColumnHeadings.Cells(lngRow, 2)
        Set objCheckbox = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1" _
                            , Left:=412.8 _
                            , Top:=objCell.Top _
                            , Height:=10 _
                            , Width:=9.6)
        objCheckbox.Name = "cb" & lngRow
        objCheckbox.Appearance.Caption = ""
        objCheckbox.Appearance.BackColor = &H808080
        objCheckbox.Appearance.BackStyle = 0
        lngRow = lngRow + 1
        If lngRow > 1 Then
            Exit For
        End If
    Next

设置复选框的名称有效,但设置其他属性不会导致运行时错误:' 438',对象不支持此属性或方法。

当我查看新添加的复选框的属性时,名称设置正确,但未设置Caption,BackColor和BackStyle。

如何以编程方式设置这些?

1 个答案:

答案 0 :(得分:1)

使用MSForms.CheckBox及其中的Object集,更容易。使用以下示例代码。

Sub test()

    Dim objCheckbox As MSForms.CheckBox

     Set objCheckbox = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1" _
                            , Left:=10.8 _
                            , Top:=10 _
                            , Height:=25 _
                            , Width:=200).Object
        objCheckbox.Name = "Dummy_Test"
        objCheckbox.Caption = "Test"
        objCheckbox.BackColor = vbRed
        objCheckbox.BackStyle = 0

End Sub