1

我在 Excel 单元格中有一个列,其中包含“True”或“false”作为文本。

该列由 VBA 代码填充。

我需要将复选框显示为选中而不是 True,并显示一个未选中的复选框而不是 False。

这可以通过 VBA 代码完成吗?假设包含该值的单元格被称为

ActiveWorkBook.Sheets("mySheetName").cells(i, 4)

i = 行索引,位于循环内。

4

2 回答 2

1

这段代码应该可以完成这项工作,只需根据您的需要更改 For 循环:

子 subPlaceCheckbox()

    常量 cDblCheckboxWidth As Double = 15
    常量 cStrCheckboxPrefix As String = "cb4_"

    将 cb 调暗为复选框
    调暗为范围
    暗淡我只要

    Application.ScreenUpdating = False

    '首先,删除所有旧的复选框以避免双打
    对于 Sheet1.CheckBoxes 中的每个 cb
        If Left(cb.Name, Len(cStrCheckboxPrefix)) = _
            cStrCheckboxPrefix 然后
            cb.删除
        万一
    下一个

    对于 i = 1 到 20
        设置 rng = Sheet1.Cells(i, 4)

        '放置复选框
        设置 cb = Sheet1.CheckBoxes.Add(_
            rng.Left + rng.Width / 2 - cDblCheckboxWidth / 2, _
            rng.Top, cDblCheckboxWidth, rng.Height)

        '设置复选框属性
        带cb
            .Name = "cb_" & rng.Address(假,假)
            .Value = rng.Value
            .LinkedCell = rng.Address
            .Display3DShading = 真
            .Characters.Text = ""
        结束于

        '隐藏单元格内容
        rng.NumberFormat = ";;;"

    接下来我

    Application.ScreenUpdating = True
结束子
于 2013-01-17T12:50:29.770 回答
1

您可以只让单元格显示 TRUE 或 FALSE,将复选框添加到您的工作表中,然后将复选框上的 LinkedCell 设置为您的原始单元格。如果您不想看到该单元格,请将复选框放在其顶部!

于 2013-01-17T12:54:00.437 回答