【问题标题】:Returning a value or Cancel from Excel userform从 Excel 用户窗体返回值或取消
【发布时间】:2015-08-25 04:08:44
【问题描述】:

我有一个调用用户表单来显示的子程序,并且仅在用户没有单击我的取消按钮时才想继续。我不想将所有其他子调用都放在用户表单中。

是否可以让用户表单返回一个值或一种方法来检查用户是否单击了特定按钮?

我想我可以使用全局变量,但我想知道我是否可以在用户窗体之间传递东西。

【问题讨论】:

  • 我自己会使用全局变量。还有其他方法可以做到这一点,但这会奏效。
  • 您是否从用户窗体调用处理用户输入的其他地方(例如在单独的模块中)的子例程?您可以将UserFom1.ActiveControl.Name 传递给该函数,并根据控件的名称使用CASE 语句。

标签: excel vba userform


【解决方案1】:

我更喜欢使用属性。

在你的用户表单中

Private m_bCancel As Boolean

Public Property Get Cancel() As Boolean
    Cancel = m_bCancel
End Property

Public Property Let Cancel(ByVal bCancel As Boolean)
    m_bCancel = bCancel
End Property

取消按钮的代码

Private Sub cmdCancel_Click()
    Me.Cancel=True
    Me.Hide
End Sub

像这样从外部调用 userForm

sub loadForm()

dim frm 

set frm= new UserForm1
frm.show

if frm.Cancel then
   Msgbox "Cancelled"
end if

End Sub

【讨论】:

  • 我试过这个并且得到一个“堆栈空间不足”的错误。它不断循环通过 Let Cancel 属性。
猜你喜欢
  • 2013-09-28
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 2012-09-04
相关资源
最近更新 更多