Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Excel用户窗体返回值或取消_Excel_Vba_Userform - Fatal编程技术网

从Excel用户窗体返回值或取消

从Excel用户窗体返回值或取消,excel,vba,userform,Excel,Vba,Userform,我有一个sub,它调用userform来显示,并且只希望在用户没有单击我的取消按钮时继续。我不想将所有其他子调用都放在userform中 是否可以让userform返回一个值或一种检查用户是否单击了某个特定按钮的方法 我想我可以使用一个全局变量,但我想知道我是否可以在userform之间传递东西。我更喜欢使用属性 在您的用户表单中 Private m_bCancel As Boolean Public Property Get Cancel() As Boolean Cancel =

我有一个sub,它调用userform来显示,并且只希望在用户没有单击我的取消按钮时继续。我不想将所有其他子调用都放在userform中

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


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

我更喜欢使用属性

在您的用户表单中

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

我更喜欢使用属性

在您的用户表单中

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

我更喜欢使用属性

在您的用户表单中

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

我更喜欢使用属性

在您的用户表单中

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

我会自己使用全局变量。还有其他方法可以做到这一点,但这会起作用。从UserForm,您是否在其他地方(如在单独的模块中)调用处理用户输入的子例程?您可以将
UserFom1.ActiveControl.Name
传递给该函数,并根据控件的名称使用
CASE
语句。我将自己使用全局变量。还有其他方法可以做到这一点,但这会起作用。从UserForm,您是否在其他地方(如在单独的模块中)调用处理用户输入的子例程?您可以将
UserFom1.ActiveControl.Name
传递给该函数,并根据控件的名称使用
CASE
语句。我将自己使用全局变量。还有其他方法可以做到这一点,但这会起作用。从UserForm,您是否在其他地方(如在单独的模块中)调用处理用户输入的子例程?您可以将
UserFom1.ActiveControl.Name
传递给该函数,并根据控件的名称使用
CASE
语句。我将自己使用全局变量。还有其他方法可以做到这一点,但这会起作用。从UserForm,您是否在其他地方(如在单独的模块中)调用处理用户输入的子例程?您可以将
UserFom1.ActiveControl.Name
传递给该函数,并根据控件的名称使用
CASE
语句。我尝试了这个方法,得到了一个“堆栈空间不足”错误。它一直在Let Cancel属性中循环。我尝试了这个,但得到了一个“堆栈空间不足”错误。它一直在Let Cancel属性中循环。我尝试了这个,但得到了一个“堆栈空间不足”错误。它一直在Let Cancel属性中循环。我尝试了这个,但得到了一个“堆栈空间不足”错误。它在Let Cancel属性中不断循环。