用户窗体在重新打开时会清除值

3
如何在点击完成按钮后保留输入到Excel用户窗体中的值,以免清除?因此,每当我通过Commandbutton调用Userform时,先前填写的字段信息将保持不变,而不是被清除。
该用户窗体包含一个MultiPage,旨在接受用户的输入并将其放置在excel单元格中,一旦用户点击完成按钮。在Userform中包含Commandbutton,可切换隐藏/取消隐藏功能,也必须保存在某个位置。
完成页面(用户将关闭/退出页面的位置)如下所示: “enter 迄今为止完成按钮的代码:

enter image description here


我的技巧?将它们保留在隐藏的工作表上。 - Damian
那么用户窗体没有自己存储信息的方法吗? - GoldFusion
2
表单本身无法存储数据。您可以按上述建议在工作表、单独的文件、注册表、数据库或其他几个位置保存。隐藏工作表或注册表是最简单和最有效的方法。 - Sam
1
然而,如果您正在询问如何在“完成”单击和vba将这些值移动到工作表之间的短时间内保持这些值可用,那可能是一个不同的问题。 - Mistella
@dwirony 好的,抱歉,让我解释一下;我的意思是将所有表单值存储在全局变量中,并在表单加载时重新填充。只要包含表单的工作簿保持打开状态,这些全局变量就会一直存在。 - Absinthe
显示剩余4条评论
1个回答

4

我不确定为什么大家都说这是不可能的 - 你应该可以使用以下方法:

Private Sub BtnFinish_Click()
    Me.Hide
End Sub

所有之前的数值都将被保留。如果我错了,请有人纠正我 :).

需要补充的是,一旦关闭EXCEL.EXE,这些数值就会丢失。


我认为误解在于:OP是否想要使用用户窗体来在打开/关闭/等操作父工作簿之间保留变量;在关闭用户窗体并将值保存到工作表之间;或者能否重新打开具有先前值的用户窗体? - Mistella
@Mistella 是的,我也认为可能是这种情况 - OP 需要澄清他想做什么。 - dwirony
1
隐藏表单会生效...除非用户点击那个讨厌的[X]按钮,这将销毁表单实例及其状态。确保处理QueryClose事件并将Cancel参数设置为True,以防止在CloseModeVbQueryClose.vbFormControlMenu时出现该问题:您还需要执行Me.Hide - Mathieu Guindon
1
@MathieuGuindon,我在尝试找到你谈论Unload MeMe.Hide的博客,你能在这里分享一下链接吗? - dwirony
就我个人而言,我曾经想过在这里发布一个过度解决的答案,建议将整个状态从表单的代码后台中提取出来,并放入单独的“模型”类中(每个选项卡一个),但是问题提问者没有足够的关于他们的模型的信息... 我需要在 Stack Overflow 上发帖更少,在我的博客上发帖更多!;-) - Mathieu Guindon
@dwirony :-) FYI,这是一个关于非模态用户窗体的相关后续链接,位于SO:正确销毁非模态用户窗体实例 - T.M.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接