我在excel单元格中有一个列,其中包含“True”或“false”作为文本。
该列由VBA代码填充。
我需要显示一个选中而不是True的复选框,并取消选中一个复选框而不是False。
可以通过VBA代码完成吗?假设包含该值的单元格被称为
ActiveWorkBook.Sheets(“mySheetName”)。cells(i,4)
i =行索引,位于循环内。
答案 0 :(得分:1)
此代码应该完成这项工作,只需根据您的需要更改For循环:
Sub subPlaceCheckbox() Const cDblCheckboxWidth As Double = 15 Const cStrCheckboxPrefix As String = "cb4_" Dim cb As CheckBox Dim rng As Range Dim i As Long Application.ScreenUpdating = False 'First, delete all old checkboxes to avoid doubles For Each cb In Sheet1.CheckBoxes If Left(cb.Name, Len(cStrCheckboxPrefix)) = _ cStrCheckboxPrefix Then cb.Delete End If Next For i = 1 To 20 Set rng = Sheet1.Cells(i, 4) 'Place checkbox Set cb = Sheet1.CheckBoxes.Add( _ rng.Left + rng.Width / 2 - cDblCheckboxWidth / 2, _ rng.Top, cDblCheckboxWidth, rng.Height) 'Set checkbox properties With cb .Name = "cb_" & rng.Address(False, False) .Value = rng.Value .LinkedCell = rng.Address .Display3DShading = True .Characters.Text = "" End With 'Hide content of cell rng.NumberFormat = ";;;" Next i Application.ScreenUpdating = True End Sub
答案 1 :(得分:1)
您可以将单元格保留为TRUE或FALSE,将复选框添加到工作表中,并将复选框上的LinkedCell设置为原始单元格。如果您不想看到单元格,请将复选框放在其顶部!