Excel 2010 VBA提示和取消选中复选框单击

时间:2012-01-23 19:23:11

标签: excel vba checkbox excel-2010

我在Excel中有一列复选框。当其中一个被选中时,我想提示用户“你确定吗?”或者那种效果。如果他们回答“是”,继续前进,什么都不做。如果他们回答否,我想取消选中该框(他们刚刚点击的那个)。 这似乎很简单,但我不能因某种原因让它发挥作用。

我尝试过类似的事情:

r = MsgBox("Are you sure", vbYesNo, "Eh?")
If r <> vbYes Then Application.Undo

但这不太有用。它看起来很简单,却最终成为一种痛苦。

1 个答案:

答案 0 :(得分:0)

问题是选中复选框不会触发可以撤消的Excel操作。 (如果控件是Form或ActiveX,则无关紧要。)

如果您的复选框 ActiveX控件,则可以执行以下操作:

Private Sub VerifyCheckBox(chk As CheckBox)
   If chk.Value Then ' only ask question if checkbox has been checked
      If MsgBox("Are you sure", vbYesNo, "Eh?") <> vbYes Then
         chk.Value = Not chk.Value
      End If
   End If
End Sub

然后,您可以在每个复选框的点击事件中调用它。

Private Sub CheckBox1_Click()
   VerifyCheckBox CheckBox1
End Sub

Private Sub CheckBox2_Click()
   VerifyCheckBox CheckBox2
End Sub