从第二个宏中卸载用户窗体
Unload the Userform from second macro
在我的第一个宏中,我显示了一个用户窗体 Cemealistfinal
。使用后,我隐藏用户窗体以保留输入信息。
我的第二个宏,我真的不需要用户窗体中的信息所以我使用下面的代码来 Unload
已经隐藏的用户窗体。
Dim UForm As Object
For Each UForm In VBA.UserForms
If UForm.Visible = True Then
UForm.Unload
End If
Next
这行不通。我不确定如何从第二个宏中正确卸载表单,还有其他方法吗?
您的代码将卸载所有可见的用户表单。您可以通过使用变量来存储对用户表单的引用来更好地控制您正在做的事情。例如:
如果您设置一个 public 变量(在模块中声明的变量,在任何过程之外)来存储对您的用户窗体的引用,那么您可以稍后引用它:
Public oForm As UserForm1 'Public declaration of form
现在加载表单时,创建引用:
Public Sub LoadTheUserForm()
Set oForm = UserForm1
oForm.Show
End Sub
如果您稍后想关闭它,可以从直接引用它的宏中关闭它:
Public Sub CloseUserForm()
If Not (oForm Is Nothing) Then
Unload oForm
Set oForm = Nothing
End If
End Sub
if
语句检查用于表单的 public 变量是否正在使用,如果是,则表示表单正在使用。它卸载它,并清除引用 (Set oForm = Nothing
)。如果你只想在它可见(或不可见)时关闭它,你可以添加另一个 If
语句。
Public Sub CloseInvisibleUserForm()
If Not (oForm Is Nothing) Then
if oForm.Visible=false then
Unload oForm
Set oForm = Nothing
End If
End If
End Sub
如果您在用户窗体中使用代码,您可以使用 Me
对象来引用该用户窗体
Unload Me
但是,当在单独模块的子程序中时,您可以简单地通过名称引用任何用户窗体
' General
Unload UserForm1
' Your case
Unload Cemealistfinal
在我的第一个宏中,我显示了一个用户窗体 Cemealistfinal
。使用后,我隐藏用户窗体以保留输入信息。
我的第二个宏,我真的不需要用户窗体中的信息所以我使用下面的代码来 Unload
已经隐藏的用户窗体。
Dim UForm As Object
For Each UForm In VBA.UserForms
If UForm.Visible = True Then
UForm.Unload
End If
Next
这行不通。我不确定如何从第二个宏中正确卸载表单,还有其他方法吗?
您的代码将卸载所有可见的用户表单。您可以通过使用变量来存储对用户表单的引用来更好地控制您正在做的事情。例如:
如果您设置一个 public 变量(在模块中声明的变量,在任何过程之外)来存储对您的用户窗体的引用,那么您可以稍后引用它:
Public oForm As UserForm1 'Public declaration of form
现在加载表单时,创建引用:
Public Sub LoadTheUserForm()
Set oForm = UserForm1
oForm.Show
End Sub
如果您稍后想关闭它,可以从直接引用它的宏中关闭它:
Public Sub CloseUserForm()
If Not (oForm Is Nothing) Then
Unload oForm
Set oForm = Nothing
End If
End Sub
if
语句检查用于表单的 public 变量是否正在使用,如果是,则表示表单正在使用。它卸载它,并清除引用 (Set oForm = Nothing
)。如果你只想在它可见(或不可见)时关闭它,你可以添加另一个 If
语句。
Public Sub CloseInvisibleUserForm()
If Not (oForm Is Nothing) Then
if oForm.Visible=false then
Unload oForm
Set oForm = Nothing
End If
End If
End Sub
如果您在用户窗体中使用代码,您可以使用 Me
对象来引用该用户窗体
Unload Me
但是,当在单独模块的子程序中时,您可以简单地通过名称引用任何用户窗体
' General
Unload UserForm1
' Your case
Unload Cemealistfinal