我是VBA的入门者。
我在excel(非活动X)中创建了多个复选框,我想进行某种控制:我有一个名为A,B,C和D的复选框 我想做一个(或多个)VBA宏: 如果B被选中/未选中,则C和D被选中/未选中 如果A被选中/未选中,则B,C和D被选中/未选中
对于整个控件,我尝试了以下操作:
DEP_ID
结束子
但是我有一个问题: 始终选中与宏链接的复选框(尽管每次单击时,其他复选框都会按预期状态切换),可能是因为它与其他复选框一样包含在循环中。 实际上,我希望能够将复选框状态应用于其他复选框的确定且有限的列表中
我找不到是否可以根据其位置或名称来选择一组复选框
任何人都可以帮忙
谢谢
以下是答案中的完整解决方案:
我创建四个复选框,案例1,案例2,案例3,案例4。
案例1一次控制另外3个案例:当On =>全部打开时,Off =>全部关闭。
每个其他都可以单独切换:当“关闭”时,情况1变为“关闭”;当“打开”时,如果其他情况都为“打开”,则情况1会打开。
以下是用于完成此操作的宏:
CONNECT BY PRIOR
答案 0 :(得分:1)
您可以尝试以下代码;我建议在一个新文件中对其进行测试,如果可以运行,则可以将其嵌入到实际文件中。
您可以执行以下步骤
我创建了4个复选框,分别命名为CHB_A,CHB_B,CHB_C和CHB_D
以下是您可以分配给复选框A的宏,当单击它时,该宏将被调用
Sub CHB_A_Click()
chb_a = ActiveSheet.CheckBoxes("CHB_A").Value
If chb_a = xlOff Then
ActiveSheet.CheckBoxes("CHB_B").Value = xlOff
ActiveSheet.CheckBoxes("CHB_C").Value = xlOff
ActiveSheet.CheckBoxes("CHB_D").Value = xlOff
ElseIf chb_a = xlOn Then
ActiveSheet.CheckBoxes("CHB_B").Value = xlOn
ActiveSheet.CheckBoxes("CHB_C").Value = xlOn
ActiveSheet.CheckBoxes("CHB_D").Value = xlOn
End If
End Sub
我已经测试了您的代码,并且正在切换所有复选框的状态
对于您的声明,“始终选中链接到宏的复选框(尽管每次单击时,其他复选框的状态都会按预期切换)”
这是因为如果您单击一个并选中/取消选中它,则它将立即再次切换,因为代码正在切换所有复选框的状态。您不会看到区别。