相关疑难解决方法(0)

VBA - 正确销毁无模式UserForm实例

介绍:

我知道 - 显示UserForms - 这是最好的做法

  • 处理QueryCloseuserform代码(If CloseMode = vbFormControlMenu ...)
  • Unload Me其中不做,只是一个胆小的Me.Hide指令(在阻止[x] -it和最终的自毁之后Cancel = True)
  • 在[class]代码中设置相关变量/ [property](例如.IsCancelled=True)
  • 为了能够通过调用代码卸载UF .

有用的链接

一个出色的概述"UserForm1.Show?" 可以在https://rubberduckvba.wordpress.com/2017/10/25/userform1-show/ 以及许多示例性的SO答案中找到(thx到@ Mats'Mug和RubberDuck).


1)模态UserForms的工作示例

据我所知 - 我确实尝试学习 - ,对于模态 UF ,以下代码应该没问题:

案例1a) ..使用UF实例的局部变量,如常见:

Public Sub ShowFormA
  Dim ufA As UserForm1
  Set ufA = New UserForm1
' show userform 
  ufA.Show          ' equivalent to: ufA.Show vbModal

' handle data after user …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba userform

7
推荐指数
1
解决办法
3391
查看次数

Sub函数显示UserForm

我有一个包含多个UserForms的excel文件.要打开UserForm我有代码,如

Sub runAdjuster()
   Adjuster.Show
End Sub
Run Code Online (Sandbox Code Playgroud)

其中大约有5个.在保留此代码的位置方面,什么是最佳实践?我最初在一个模块中使用它,但已决定将其移动到ThisWorkbook对象.寻找通常用于保持代码清洁的提示.

excel vba excel-vba

5
推荐指数
1
解决办法
937
查看次数

为什么要在 VBA 类模块中声明新类型?

我想遵循 Mathieu Guindon在这个优秀答案中描述的 MVP Userform 架构。但是,我不明白为什么在 FilterModel 类模块以及 FilterForm Userform 模块中,在类中创建了新类型,然后将其元素重新声明为类的属性。为什么这是必要的?为什么不将 SelectedFilter 声明为字符串类型的属性?我错过了什么吗?

mvp vba types module class

3
推荐指数
1
解决办法
101
查看次数

如何让 VBA 代码等到 vbModeless 用户窗体关闭

我想使用无格式的用户表单,以便用户可以在回答用户表单上的问题之前浏览 Excel 表。我需要暂停或循环代码,直到用户窗体关闭(隐藏或卸载)。

与此类似的问题: 当表单关闭并设置为 vbModeless 时,如何等待特定代码运行? 但这里的解决方案不适用于我的应用程序;我的用户窗体在一个长子程序的中间打开,该子程序需要在用户窗体关闭后完成执行。

Dim popupActive as Boolean

popupActive = True
StartingSINT_Popup.Show vbModeless 'Open userform

'have VBA code wait until userform is closed
wait until popupActive = False 'set to false with OK button on userform

'continue code with info input inside StartingSINT_Popup userform
Run Code Online (Sandbox Code Playgroud)

excel vba userform

2
推荐指数
1
解决办法
4085
查看次数

标签 统计

vba ×4

excel ×3

excel-vba ×2

userform ×2

class ×1

module ×1

mvp ×1

types ×1