我使用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。
如何以编程方式设置这些?
答案 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