我有一個電子表格模板,需要運行不同的宏,根據在按下按鈕之前勾選了哪些複選框。我在一個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