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

同一行中有两个错误