Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从VBA将包含true/false复选框的excel单元格转换为复选框_Vba_Excel - Fatal编程技术网

从VBA将包含true/false复选框的excel单元格转换为复选框

从VBA将包含true/false复选框的excel单元格转换为复选框,vba,excel,Vba,Excel,我在excel单元格中有一列,其文本为“True”或“false” 该列由VBA代码填充 我需要将复选框显示为选中而不是真,并将复选框显示为未选中而不是假 这可以从VBA代码中完成吗?假设包含该值的单元格被称为 ActiveWorkBook.Sheets(“mySheetName”).cells(i,4) i=行索引,它位于循环内。此代码应该可以完成此工作,只需根据需要更改For循环即可: Sub subPlaceCheckbox() Const cDblCheckboxWidth A

我在excel单元格中有一列,其文本为“True”或“false”

该列由VBA代码填充

我需要将复选框显示为选中而不是真,并将复选框显示为未选中而不是假

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

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


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

此代码应该可以完成此工作,只需根据需要更改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 子位置复选框() 常数cDblCheckboxWidth为Double=15 Const cStrCheckboxPrefix As String=“cb4_” 将cb设置为复选框 变暗rng As范围 我想我会坚持多久 Application.ScreenUpdating=False '首先,删除所有旧复选框以避免重复 对于表1.1中的每个cb复选框 如果保留(cb.Name,Len(cStrCheckboxPrefix))=_ cStrCheckboxPrefix然后 cb.删除 如果结束 下一个 对于i=1到20 设置rng=Sheet1.单元(i,4) '放置复选框 设置cb=Sheet1。复选框。添加(_ 左侧标记+标记宽度/2-cDblCheckboxWidth/2_ 顶部标记、CDBL复选框宽度、高度标记) '设置复选框属性 带cb .Name=“cb_”&rng.Address(假,假) .Value=参考值 .LinkedCell=rng.Address .Display3DShading=True .Characters.Text=“” 以 '隐藏单元格的内容 rng.NumberFormat=“;” 接下来我 Application.ScreenUpdating=True 端接头
您可以将单元格保留为TRUE或FALSE,将复选框添加到工作表中,然后将复选框上的LinkedCell设置为原始单元格。如果不想看到单元格,请将复选框置于单元格顶部

只是为了视觉效果?您可能可以为此使用条件格式。也许可以帮你省去一些麻烦……或者创建更多。@我是否应该假设你在本栏中的每一行都需要一个复选框?将这样一个简单的干净的真、假复选框更改为复选框的目的是什么?如果不是真的需要,您不希望在工作表中加载不必要的控件:)您好bonCodigo,我需要复选框,因为用户可以选择/取消选择行,因为只有选定的行需要在以后的时间点进行处理。