Excel – 如果所有checkbox(ActiveX)未选中,则发送msgbox
我试图让macros发送一个msgbox万一activesheet(ActiveX)的任何checkbox被选中。
我不知道为什么,但是当我运行macros,即使我有一个checkbox检查跳转线“x = x + 1”…
有人能帮我吗?
Private Sub adecoagrobox1_Click() If adecoagrobox1.Value = True Then On Error Resume Next ThisWorkbook.Sheets("Comps_pivot").PivotTables("compspivot1").AddDataField Sheets("Comps_pivot").PivotTables( _ "compspivot1").PivotFields("Adecoagro"), "Adecoagro ", xlSum Else On Error Resume Next ThisWorkbook.Sheets("Comps_pivot").PivotTables("compspivot1").PivotFields("Adecoagro "). _ Orientation = xlHidden End If Dim control as OLEObject Dim x as integer x = x + 1 For Each control In ActiveSheet.OLEObjects If TypeName(control.Object) = "Checkbox" And control.Object.Value = 1 Then x = x + 1 End If Next control If x = 0 Then MsgBox ("You must select at least one option") On Error Resume Next adecoagrobox1.Value = True ThisWorkbook.Sheets("Comps_pivot").PivotTables("compspivot1").AddDataField Sheets("Comps_pivot").PivotTables( _ "compspivot1").PivotFields("Adecoagro"), "Adecoagro ", xlSum End If End Sub
提前谢谢了!
这是发生了什么事
Dim x as integer
整数的默认值是0.所以X被设置为0。
x = x + 1
立即你递增,并设置为1。
If x = 0 Then MsgBox ("You must select at least one option")
所以上面的条件从来没有满足
声明后,删除行x = x + 1,然后尝试
这是一个非常愚蠢的错误…
而不是checkbox的B必须在大写字母…所以CheckBox,而不是checkbox
也是真的,而不是1
同一行中有两个错误