【问题标题】:Userform keeps clearing values when reopened重新打开时,用户窗体会保持清除值
【发布时间】:2019-03-09 02:25:03
【问题描述】:

单击完成按钮后,如何防止输入到 excel 用户表单中的值自行清除?因此,每当我通过命令按钮调用用户窗体时,先前填充的字段信息都会保持原样,基本上不会被清除。

此用户表单由MultiPage 组成,旨在接收用户的输入,并在用户点击完成按钮后将其放置在 Excel 单元格中。在用户窗体中包含命令按钮,用于切换隐藏/取消隐藏功能,该功能也必须保存在某处

完成页面(用户将在此处关闭/退出页面)如下所示:

到目前为止完成按钮的代码:

【问题讨论】:

  • 我的把戏?将它们保存在隐藏的工作表中。
  • 那么用户表单就没有办法自己存储信息了吗?
  • 不可靠。它会被各种 Excel 操作刷新,例如保存带有更改的工作簿。
  • 表单本身不能存储数据。您可以按照上面的建议保存在工作表中、单独的文件中、注册表中、数据库中或其他几个地方。隐藏表或注册表是最简单和最有效的。
  • 但是,如果您询问如何在“完成”单击和 vba 将这些值转移到工作表之间的短时间内保持这些值可用,那可能是一个不同的问题。

标签: excel vba userform


【解决方案1】:

我不确定为什么每个人都说没有办法做到这一点 - 你应该能够使用:

Private Sub BtnFinish_Click()
    Me.Hide
End Sub

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

我应该补充一点,一旦 EXCEL.EXE 关闭,值就会丢失。

【讨论】:

  • 我认为误解是:OP 是否使用用户表单来保持打开/关闭/等父工​​作簿之间的变量。 ;在关闭用户窗体和将值保存到工作表之间;或者也许能够使用先前的值重新打开用户表单?
  • @Mistella 是的,我认为情况也可能如此 - OP 需要澄清他正在尝试做什么。
  • 隐藏表单会起作用...除非用户单击那个讨厌的 [X] 按钮,否则会破坏表单实例及其状态。确保您处理了QueryClose 事件并将Cancel 参数设置为True 以防止当CloseModeVbQueryClose.vbFormControlMenu 时发生这种情况:那时您还需要执行Me.Hide
  • @MathieuGuindon 我正试图找到你谈论Unload MeMe.Hide 的博客——你能在这里分享那个链接吗?
  • FWIW 我很想在这里发布一个过激的答案,建议将整个状态从表单的代码隐藏中拉出并放入单独的“模型”类(每个选项卡一个),但 OP 确实'没有足够的关于他们的模型的信息......我需要在我的博客上发布更少的内容和更多内容! ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多