vba - 为什么我的表格还在记忆中
问题描述
我有以下代码打开一个表单,然后做一些事情。
Sub lag_ny_a3()
Dim frm As ufNyA3
Set frm = New ufNyA3
frm.Show
If Not frm Is Nothing Then
MsgBox("Doing stuff")
Unload frm
End If
End Sub
然后我的表单中有以下代码
Private Sub cmdAvbryt_Click()
Unload Me
End Sub
但是,即使在表单中单击了 cmdAvbryt 按钮,第一个代码片段也会进入 if 语句,就好像表单没有被卸载一样。为什么会这样,如果按下 cmdAvbryt 按钮,如何防止执行 if 语句中的代码?
解决方案
即使您的frm
变量不是Nothing
,表单也会被卸载。在 之前和之后添加一点检查frm.Show
:
Debug.Print VBA.UserForms.Count
frm.Show
Debug.Print VBA.UserForms.Count
你会看到它不在加载的表单列表中。如果您将对象变量设置为Nothing
它不会执行“做事”
推荐阅读
- python - Python 工厂模式 - 对象不可下标
- http - 使用 BizTalk 发布到外部 Web 服务
- amazon-web-services - 通过 pyspark 胶水作业写入镶木地板文件时,s3 存储桶被删除
- python - 在查询的任何表中都找不到列 ( )(或 SLV 未定义)。SQLCODE=-217
- spring - Spring 中的 RefreshScope 仅重新加载单例
- c++ - getter setter c++ 不如预期
- ffmpeg - 使用 ffmpeg 的 RTSP
- google-apps-script - 在 R1C1 公式中使用列标题变量
- ruby-on-rails - 从 Google Cloud Storage 为 Google App Engine 上的 Ruby on Rails 应用程序加载图像
- flutter - 无法使用 QueryVariables 中的包装器向 GraphQL 发出请求