是否可以使用VBA中的字符串检查控件的值(excel)

时间:2018-02-04 19:44:51

标签: excel vba excel-vba

我一直在谷歌上搜索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

1 个答案:

答案 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