excel - 当用户单击用户窗体上的 X 按钮时如何退出循环?
问题描述
我在下面有 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
被调用以从第一个代码块中退出循环,我该怎么听。
解决方案
遗憾的是,鉴于vba不支持多线程,我认为这是不可能的。
如果您真的坚持询问用户是否暂停,最好If
在运行时简单地询问条件。
例如。
For i = 1 to myRange.Cells.Count
' your code here...
If i = myRange.Cells.Count / 2 Then
If MsgBox("Continue to the for loop?", vbYesNo) = vbNo Then
UnLoad MyForm
Exit For
End If
End If
Next i
推荐阅读
- amp-html - AMP 未在移动设备中完全加载?
- python - 即使在主线程崩溃后,子线程也会继续运行
- macos - 在 OSX 上构建 mariadb-connector-c
- ubuntu - 安装 Sharp /usr/include/vips/vips8:35:25:致命错误:glib-object.h
- python-3.x - AttributeError:“Figure”对象没有属性“set_axes”
- angular - 路由器出口外的角组件
- java - 用户卸载我的应用后,Google Drive 应用文件夹会被删除吗?
- python - 谁能解释 tf.random_normal 和 tf.truncated_normal 形状参数?
- html - 内部下拉菜单上的引导折叠动画
- angularjs - 无法从angularjs中的facebook登录获取电子邮件