2016-07-15 66 views
1

我正在使用VBA提倡使用行的范围,每一行都会有自己的复选框。Excel 2003,用复选框添加内容

到目前为止,代码如下所示:

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”,对象没有按” t支持这个属性或方法。

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

如何设置这些编程?

回答

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 
+0

谢谢,工作一种享受! – SPlatten