我在Excel中有一列复选框。当其中一个被选中时,我想提示用户“你确定吗?”或者那种效果。如果他们回答“是”,继续前进,什么都不做。如果他们回答否,我想取消选中该框(他们刚刚点击的那个)。 这似乎很简单,但我不能因某种原因让它发挥作用。
我尝试过类似的事情:
r = MsgBox("Are you sure", vbYesNo, "Eh?")
If r <> vbYes Then Application.Undo
但这不太有用。它看起来很简单,却最终成为一种痛苦。
答案 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