gpt4 book ai didi

class - VBA 隐藏用户表单但保留输入的数据

转载 作者:行者123 更新时间:2023-12-01 02:59:51 29 4
gpt4 key购买 nike

我又回来了,我希望这是一个相当简单的问题。

我正在尝试在 VBA 中创建用户表单。用户将在表单中输入某些信息,然后关闭表单。我希望用户表单在用户关闭后保留输入的数据。我把它当作一个类模块,因为从技术上讲它们是,或者至少我是这样理解的。这是我正在使用的代码:

在显示用户表单的主子中:

Sub NonACATMemo()

Dim UserInput As MemoReasons
Set UserInput = New MemoReasons
UserInput.Show

...然后在用户表单中关闭它...

Private Sub UserForm_Terminate()
MemoReasons.Hide
End Sub

我还通过窗体上的命令按钮调用此子。我遇到的问题是,当我使用此方法时,出现错误“运行时错误‘402’:必须首先关闭或隐藏最顶层的模态窗体。”如果我使用 unload me,当我尝试从表单中获取数据时,它会被清除,并且会出现“服务器不可用”错误或类似的错误。

那么,关于隐藏用户表单但保留其中数据的任何想法?

最后几点说明:这是项目中唯一的用户表单,下面是一个示例,说明我如何尝试使用公共(public)属性 Get 方法从中获取数据:

Debug.Print UserInput.EmailFlag
Debug.Print UserInput.ContraFirm
Debug.Print UserInput.MemoReason

好吧,如果有人有任何建议,我会洗耳恭听。

最佳答案

这是一个古老的话题......希望有人会在这方面需要帮助。

您可以执行以下操作:

1-放置一个关闭/取消按钮(您可以将取消属性设置为真)

2-将以下代码附加到Click 事件

Private Sub btnClose_Click()
'Do some stuff if necessary
Me.Hide
End Sub

3-将此代码附加到QueryClose 事件

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then 'vbFormControlMenu = 0 ([X] button on top right), see MSDN
Cancel = True 'Don't fire Terminate event...
btnClose_Click '...instead, call my close event handler
End If
End Sub

您可以通过在 UserForm_Initialize 事件中放置一个调试器断点来检查结果,它应该只在第一次显示 UserForm 时触发,因此授予 UserForm 状态保存。

关于class - VBA 隐藏用户表单但保留输入的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18897803/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com