我有一个电子表格模板,需要运行不同的宏,根据在按下按钮之前勾选了哪些复选框。我在一个if语句中写了一个if语句,这个语句在一些复选框中没有问题,但是为了解决所有场景中需要构建的ifs的数量会呈指数级增长。现在有6个盒子可以检查,这应该运行所有的可能性。使用循环根据选中的复选框在Excel中运行某些宏
让我们保持简单并调用复选框CB1-CB6,它们应该运行相应的宏M1-M6(取决于检查哪个CB),以任意组合方式运行(也就是说,您可以选择运行CB1和CB5来运行M1和M5,或者你可以选择全部6来运行全部6个宏)。
现在它看起来像:
Sub Checkboxes()
If ActiveSheet.CB("CB1").Value = 1_
and ActiveSheet.CB("CB2").Value = 1 Then
Call M1
Call M2
ElseIf ActiveSheet.CheckBoxes"CB1").Value = 1_
And ActiveSheet.CheckBoxes("CB2").Value = 0 Then
Call M1
ElseIf ActiveSheet.CheckBoxes("CB2").Value = 1_
And ActiveSheet.CheckBoxes("CB1").Value = 0 Then
Call M2
Else: MsgBox "Please select at least one option to proceed."
End If
End Sub
但你可以看到书面如果每一个场景说法变得很长,肯定不会写它的最佳方式。
“ElseIf ActiveShee t.CheckBoxes(“CB1”)。Value = 1_ 和ActiveSheet.CheckBoxes(“CB1”)。Value = 0 Then'不会发生 – sous2817
你是什么意思?这是目前如何工作的一个例子。 – wmab
复选框(“CB1”)不能同时为1和0。你有一个错字。它应该是复选框(“CB2”).Value = 1和复选框(“CB1”)。值= 0.无论哪种方式,我认为有一个更简单的方法(正如我在我的答案中概述) – sous2817