【问题标题】:call a yes/no form from module in VBA从 VBA 中的模块调用是/否表单
【发布时间】:2020-07-03 15:27:00
【问题描述】:

我有自动发送几封电子邮件的模块。我想调用一个用户表单/消息,询问:“你真的要发送所有邮件吗?”,这取决于选择是或否,宏是否继续。

我知道 MsgBox(text, vbYesNo) 的简单解决方案,但我想通过用户表单解决这个问题,因为我也可以用它解决不同的问题。

如何做到这一点,宏只在用户窗体中的“是”按钮被点击时才继续?非常感谢

【问题讨论】:

  • 三段代码。一个调用表单,第二个在表单上调用第三个(如果是)。第三个完成工作。
  • 在表单中点击完成后,主代码(调用表单的代码)是否可以继续?
  • 见下面@Joe 的回答。

标签: excel vba


【解决方案1】:

您可以向您的用户窗体添加一个属性,以指示是否单击了“是”,例如:

Private bYesClicked As Boolean

Public Property Get YesClicked() As Boolean
     YesClicked = bYesClicked
End Property

然后将 bYesClicked 设置为 True 并在单击 Yes 按钮时隐藏 UserForm:

Private Sub YesButtonClick()
   bYesClicked = True
   Me.Hide
End Sub

要使用它,请以模态方式显示您的用户窗体,然后访问 YesClicked 属性:

Dim u As MyUserForm
Set u = New MyUserForm
u.Show vbModal
If u.YesClicked Then ...

【讨论】:

  • 谢谢乔。还有一件事,当我以模态方式显示表单时,它不会显示在所有窗口的顶部,如果我没有设置为 vbModal 那么 YesClick 不起作用。任何解决方案(如何始终显示在顶部?)?
  • @Al_Iskander - 不确定。您可以尝试发布一个单独的问题,将其作为 UserForm 放在首位。或者谷歌展示了一些使用 Windows API 的技术,例如:mrexcel.com/forum/excel-questions/…
猜你喜欢
  • 1970-01-01
  • 2010-10-21
  • 2011-02-17
  • 2012-03-12
  • 2012-11-14
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
相关资源
最近更新 更多