【发布时间】:2017-10-15 15:54:55
【问题描述】:
我正在创建一个 VBA 宏来选择工作表中的所有复选框,它工作正常,但现在我想调整我的代码以仅选择和取消选择特定范围内的复选框。
这是我的代码。
Sub Select_all()
Dim Cbox As CheckBox
Dim Rng As Range
Set Rng = ActiveWorkbook.Sheets("Sheet4").Range("B7, B104")
For Each Cbox In ActiveSheet.CheckBoxes
If Not Intersect(Cbox.TopLeftCell, Rng) Is Nothing Then
If Cbox.name <> ActiveSheet.CheckBoxes("Check Box 104").name Then
Cbox.Value = ActiveSheet.CheckBoxes("Check Box 104").Value
End If
End If
Next Cbox
End Sub
我加了
If Not Intersect(Cbox.TopLeftCell, Rng) 什么都不是
但它不会改变任何东西,当我删除这部分时,它会选择工作表中的所有复选框,我只需要 Range("B7:B104")
有什么建议吗?非常感谢。
【问题讨论】:
-
为什么将范围定义为
Range("B7, B104")?这意味着它只有两个单元格,B7 和 B104,而不是单元格 B7:B104 的范围。然后在你的代码下你把Range("B7:B104")的正确定义,所以改变它。 -
它们是 ActiveX 复选框还是表单控件复选框?
-
@tigeravatar 我和你一样,我只是错误地粘贴了代码。
-
@RobinMackenzie 表单控制复选框