Excel - 如果所有复选框(ActiveX)未选中,发送msgbox
问题描述:
我试图让宏发送msgbox,以防活动表(ActiveX)的任何复选框被选中。Excel - 如果所有复选框(ActiveX)未选中,发送msgbox
我不知道为什么,但是当我运行宏它的跳线“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只是声明之后,然后尝试
+0
嘿!感谢你及时的答复!我的意图是,如果有任何复选框被检查在activesheet(总共9),x应该高于零。 如果没有复选框被选中,x应该是零,它应该发送一个msgbox。 问题是,即使当我检查复选框时,它读取的x为0. –
删除'上的错误恢复Next'报表,看看有什么错误您遇到 – YowE3K
并注意您的测试FO r'如果x = 0那么''是没有意义的,因为在Dim x as integer后紧跟着一个'x = x + 1'(hmmm,为什么不是'integer'中的'i'大写 - IDE应该自动改变这个?!?!),这意味着'x'将始终至少为'1'。 – YowE3K
嗨!感谢你及时的答复! 当我运行宏时,它总是跳转到x = x + 1 ...因此x总是等于0. 当复选框被选中时,它不会被读取... x = 0表示没有选中复选框,它应该显示msgbox –