Excel 2010 VBA Подсказка и снимите флажок, щелкните флажок - PullRequest
0 голосов
/ 23 января 2012

У меня есть столбцы флажков в Excel. Когда один из них проверен, я хочу предложить пользователю "Вы уверены?" Или что-то в этом роде. Если они ответят «Да», двигайтесь дальше и ничего не делайте. Если они ответят «нет», я хочу снять флажок (тот, который они только что нажали). Это кажется достаточно простым, но я по какой-то причине не могу заставить его работать.

Я пробовал что-то вроде:

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

Но это не совсем работает. Это кажется таким простым, но в итоге это становится болью.

1 Ответ

0 голосов
/ 24 января 2012

Проблема в том, что установка флажка не запускает действие Excel, которое можно отменить.(Не имеет значения, являются ли элементы управления формой или 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
...