您好,所以我想做的是使此代码适用于所有复选框的 1-50 我希望代码仅影响单击的框。
Private Sub CheckBox1_Click()
If MsgBox("Do you want to lock this box?", vbYesNo, "Warning") = vbYes Then
ActiveSheet.CheckBox2.Enabled = False
Else
End If
End Sub
我看到几个选项(没有一个很漂亮,因为这是 VBA)。
-
Option 1:为所有复选框生成代码。这可能是最容易维护的。您首先要为所有复选框选择合理的名称(您可以通过在 Excel 中选择它们并在左上角重命名来分配它们,或者如果您已经有很多复选框,则运行将为您执行此操作的代码。This https://stackoverflow.com/questions/10641683/change-name-of-activex-command-button-using-vba-in-excel可能有用)。
然后,您可以生成代码并让每个子过程如下:
'example code for one checkbox
Private Sub chkBox_1_Click()
Call lockMeUp(Sheet1.chkBox_1.Object)
End Sub
完成每个复选框的所有代码后,您可以拥有lockMeUp
子程序如下:
Sub lockMeUp(chkBox as Object)
If MsgBox("Do you want to lock this box?", vbYesNo, "Warning") = vbYes Then
chkBox.Enabled = False
End If
End Sub
-
Option 2:通过数组或“设置”隐藏表跟踪所有选中/未选中状态,并留意触发的事件。您可以根据工作表的
Changed
事件,并将行号与您的复选框号相匹配,以便您可以离开Target
的行号。
我能想到的其他选择变得更加复杂......我有兴趣看看人们有什么其他建议。谢谢!
EDIT您可以使用一些代码来引用单个函数(如我的示例中所示),并结合 brettdj 的示例来获得最佳解决方案。嘭!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)