У меня есть код vba ниже для редактирования каждой строки одна за другой в интерфейсе пользовательской формы:
Private Sub CommandButton1_Click()
Dim MyRange As Range
Dim cell As Range
Set MyRange = Range("A2", Range("A2").End(xlDown))
For Each cell In MyRange
cell.Select
'Build form
MyForm.Title.Caption = cell.Offset(0, 2)
If cell.Offset(0, 2) = 1 Then
MyForm.Checked.Value = True
Else
MyForm.Checked.Value = False
End If
'Show form
MyForm.Show
Next cell
End Sub
У меня есть тысячи строк, и мне нужно дать пользователю немного отдохнуть!
Я хочу, чтобы этот процесс приостанавливался, если пользователь нажимает кнопку X, но я не смог найти способ выйти из цикла.
Мой код пользовательской формы, как показано ниже:
Private Sub Checked_Click()
If MyForm.Checked.Value = True Then
ActiveCell.Offset(0, 1).Value = 1
Else
ActiveCell.Offset(0, 1).Value = ""
End If
End Sub
Private Sub DoneButton_Click()
ActiveCell.Offset(0, 2).Value = 1
Unload MyForm
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox "paused"
End If
End Sub
Чего я пытаюсь достичь?
Мне нужно остановиться для каждого цикла в первом блоке кода, когда пользователи нажимают кнопку X, чтобы закрыть форму пользователя. Но я не знаю, как слушать, если UserForm_QueryClose
вызывается для выхода из цикла из первого блока кода.