excel - 打开无模式用户窗体后代码继续运行
问题描述
当加载无模式用户表单时,其中的代码(除了 Userform_Initialize 子)有时不会执行,调用用户表单的主代码会继续运行。
我以某种方式解决了它,但这是我的程序的最新更新,不幸的是它被损坏了。
Sub start() 'shortened drastically, but accurate
'....
If UBound(rs.GetRows(1000000), 2) + 1 < 6 Then
.Close SaveChanges:=False
ThisWorkbook.Sheets("Start").Range("DA1").Value = "1"
ThisWorkbook.Sheets("Start").Range("DA2").Value = MachineNr
UserForm1.Show vbModeless
GoTo ExSub
End If
'...
ExSub:
End Sub
在用户表单模块中:
Private Sub UserForm_Initialize()
Dim wb As Workbook
If ThisWorkbook.Sheets("Start").Bijwerken = "ja" Then
Me.CommandButton2.Caption = "Cancel"
Me.Label1.Caption = "Select a file to update"
bestand = ""
With Me.ComboBox1
For Each wb In Application.Workbooks
If Not wb.Name = ThisWorkbook.Name Then
For Each sht In wb.Sheets
If sht.Name = "AssetTypeTask" Then
.AddItem wb.Name
Exit For
End If
Next sht
End If
Next wb
End With
Else
bestand = ""
With Me.ComboBox1
For Each wb In Application.Workbooks
If Not wb.Name = ThisWorkbook.Name Then
.AddItem wb.Name
End If
Next wb
End With
End If
End Sub
代码通过Userform_Initialize
子程序运行没有问题,但用户窗体没有出现在屏幕前面,代码继续GoTo ExSub
执行,然后结束代码执行。用户窗体保持打开状态,但在我按下其中一个命令按钮时关闭。
解决方案
“在显示无模式表单时,代码执行也将在后台继续。”
这就是让我重新站起来的原因。我知道这一点,但忘记了它,因为我坚信并且仍然相信在我的程序的以前版本中,我有一个UF
DID 中断代码的无模式运行。
我最终通过添加一个简单的循环来检查运行代码的状态UF
Do Until Userform1.Visible = False
DoEvents
Loop
当然,这对 CPU 来说是一个小缺点,所以并不理想,但由于这不是程序中非常密集的部分,它会做的。
我在这种情况下使用的用户窗体必须是无模式的,因为用户需要能够滚动浏览用户窗体以确保他们在 UF 中填充控件的内容是正确的。这是不可编程的。
如果有人有任何其他方法可以实现这一点,请告诉我。
推荐阅读
- css - 未定义 MDC-Web CSS 主题颜色
- angularjs - 如何修复在flutter webview中无法访问视频流(NotAllowedError)以使用html5 + webRTC相机api?
- mysql - 以修改后的格式将数据从 SQL 导出到 CSV
- reactjs - 为什么打开打印对话框后 ReactDOM.flushSync 在 Chrome 中不起作用
- reactjs - 我的 serverSessionSecrect() 函数实际上在做什么?
- python-3.x - Odoo 11 将附件存储到其他数据库
- amazon-web-services - 在云形成模板中指定 yum 的版本
- grep - 使用 grep 进行 Linux 单词搜索
- redux - 如何使用ngFor以角度获取和显示ngrx存储数据
- python - 此平台上不支持 Pymssql 的轮子