我一直在谷歌上搜索3个半小时,找到了多个解决方案,但它们都不适合我。我正在尝试遍历所有复选框,并将列标记为绿色以查看已选中的列。这是我的代码:
Dim Kontrola As Shape
For Each Kontrola In ActiveSheet.Shapes
Debug.Print "CheckBox" + Right(Kontrola.Name, 2)
If Len(Kontrola.Name) = 10 Then
If Sheet1.OLEObjects("CheckBox" + Right(Kontrola.Name, 2)).Value = True Then
Sheet1.Rows(2).Interior.Color = vbGreen
Sheet1.CheckBox10.Interior.Color = vbGreen
End If
End If
If Len(Kontrola.Name) < 10 Then
Debug.Print Right(Kontrola.Name, 1)
End If
下一个Kontrola
答案 0 :(得分:0)
可能是这样的(Sheet.CheckBoxes只包含Form Controls CheckBoxes)
For Each cb In Sheet1.CheckBoxes
cb.TopLeftCell.EntireRow.Interior.Color = IIf(cb = 1, vbGreen, xlNone)
Next
您可能不需要VBA,因为您可以将CheckBox链接到Excel单元格,并使用条件格式根据链接的单元格值使单元格变为绿色。
我建议使用表单控件,因为可以根据用户首选项禁用ActiveX控件,但这里有示例 ActiveX复选框:
For Each o In Sheet1.OLEObjects
If TypeOf o.Object Is MSForms.CheckBox Then
o.TopLeftCell.EntireRow.Interior.Color = IIf(o.Object.Value, vbGreen, xlNone)
End If
Next