【问题标题】:Check if Userform exists检查用户表单是否存在
【发布时间】:2020-03-01 20:40:45
【问题描述】:

当我尝试检查两种方式时,似乎没有用户表单。

我的用户表单放在这里:

代码放在Modul3中:

'Called in Modul3
Sub testUf()
    MsgBox VBA.UserForms.Count            'gives result of 0
    MsgBox isFormLoaded("UserFormNewPath")'gives result of FALSE
End Sub

Function isFormLoaded(ByVal strName As String) As Boolean
    Dim i As Integer

    isFormLoaded = True
    strName = LCase(strName)
    For i = 0 To VBA.UserForms.Count - 1
        If LCase(UserForms(i).Name) = strName Then Exit Function
    Next
    isFormLoaded = False
End Function

我想检查指定的用户表单是否存在,以便我可以在那里打印详细信息或在普通 MsgBox 中进行选择。

为什么没有计算用户表单或者我必须做什么才能获得 TRUE 检查结果?

解决方案
正如 warcupine 提到的,以下步骤有所帮助:

  1. 将 UserForm 的 ShowModal 属性设置为 false
  2. 添加此代码行:UserFormNewPath.Show

【问题讨论】:

  • 我试过了。但是剩下的代码只有在我关闭用户窗体时才会执行?!
  • 完美,有帮助!谢谢!

标签: vba outlook


【解决方案1】:

UserFormNewPath.Show 让用户窗体出现。然后删除模态,这将停止所有执行,直到您处理模态,转到用户窗体属性并将模态设置为 False。您可以通过在设计模式下右键单击表单来访问属性,并且应该会出现一个侧边栏。

【讨论】:

  • 实际上还有一件事:所以我只有在加载 UserBox 时才获得信息,而不是如果它存在(并且只是尚未显示)。有没有办法只获取现有信息?因为如果我需要显示它才能检查它,我当然会得到一个错误......
  • 不太明白你的意思。您可以使用错误处理程序捕获错误,以避免错误中断执行。
猜你喜欢
  • 2021-07-22
  • 2011-08-05
  • 1970-01-01
  • 2020-08-21
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多