将包含true / false的Excel单元转换为VBA中的checkbox

我在excel单元格中有一个“True”或“false”作为文本的列。

该列由VBA代码填充。

我需要显示一个checkbox作为选中,而不是真正的,checkbox未选中,而不是False。

这可以从VBA代码完成吗? 假设包含该值的单元格被认为是

ActiveWorkBook.Sheets(“mySheetName”)。cells(i,4)

我=行索引,这是在一个循环内。

这个代码应该做这个工作,只要根据你的需要改变For循环:

 Sub subPlaceCheckbox()

     Const cDblCheckboxWidth As Double = 15
     Const cStrCheckboxPrefix As String =“cb4_”

     Dim cb As CheckBox
    昏暗的范围
    昏暗我只要

     Application.ScreenUpdating = False

    首先,删除所有旧的checkbox,以避免双打
    对于每个cb在Sheet1.CheckBoxes中
        如果左(cb.Name,Len(cStrCheckboxPrefix))= _
             cStrCheckboxPrefix然后
             cb.Delete
        万一
    下一个

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

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

         '设置checkbox属性
        用cb
             .Name =“cb_”&rng.Address(False,False)
             .Value = rng.Value
             .LinkedCell = rng.Address
             .Display3DShading = True
             .Characters.Text =“”
        结束

         '隐藏单元格的内容
         rng.NumberFormat =“;;;”

    接下来我

     Application.ScreenUpdating = True
结束小组

您可以将单元格保持为TRUE或FALSE,将checkbox添加到工作表,并将checkbox上的LinkedCell设置为您的原始单元格。 如果您不想查看单元格,请将checkbox放在顶部!