以下代码会自动将活动工作表中的任意复选框链接到复选框之前的一个单元格。换句话说,我可以添加任意数量的复选框,当我运行代码/宏时,所有复选框都将链接到复选框所在位置之前的单元格。
我希望能够实现,但我不知道如何实现,即当 CheckBox 为真时,能够突出显示接下来的两个 (2) 个单元格(在每个 CheckBox 前面)。我可以通过创建条件规则来实现这一点,但我这样做的方式是,我需要手动为每个复选框创建一个规则,我想要一个更动态的规则,因为我希望能够复制和粘贴复选框,并且无论复选框位于何处都能保留其功能。
如果单元格被复制并粘贴到不同的行,我怎样才能修改条件规则或宏以便=$A$3
(见图)自动更改?=$C$3:$D$3
宏
Sub LinkCheckBoxes()
Dim chk As CheckBox
Dim lCol As Long
lCol = -1 'number of columns to the right for link
For Each chk In ActiveSheet.CheckBoxes
With chk
.LinkedCell = _
.TopLeftCell.Offset(0, lCol).Address
End With
Next chk
End Sub
请注意,我将有很多复选框,类似于 TODO 应用程序,如果需要,我希望能够删除或添加更多复选框。
答案1
您需要 2 条规则来实现这一点。一条表示真,一条表示假。
=IF(UPPER($A3)="TRUE",1,0)
这将应用 True 语句的条件格式
=IF(UPPER($A3)="FALSE",1,0)
对于虚假陈述也同样如此。
将“$”锚点放在“A”上,可以将规则水平拖动到 D 和 E 列,而不会丢失“A”引用。如果数字上没有锚点,则可以将其移动到您需要的任意行。
答案2
更改=$A$3
为 即可=$A3
解决问题。进行此更改后,我可以复制包含复选框的行,然后粘贴,然后运行宏,一切正常。