【问题标题】:Save code-generated elements of form保存代码生成的表单元素
【发布时间】:2014-10-14 12:33:35
【问题描述】:

VBA、Excel 2010。

鉴于:

  1. 多页用户表单
  2. 脚本,用于复制页面(基于this question

流程:

  1. 打开表单(多页中的 1 页,screenshot 1);
  2. 通过运行脚本复制一个页面(多页中的2页,screenshot 2);
  3. 关闭形式;
  4. 重新打开表单(同样只有 1 页,与第 1 步相同);

脚本代码:

Private Sub CommandButton1_Click()
Dim l As Double, r As Double
Dim ctl As Control
Dim totalPageNum As Integer

'Get number of existing pages
totalPageNum = MultiPage1.Pages.Count

'Add new one
MultiPage1.Pages.Add

'Copy elements
MultiPage1.Pages(0).Controls.Copy
MultiPage1.Pages(totalPageNum).Paste

MultiPage1.Pages(totalPageNum).Caption = "Page" & MultiPage1.Pages.Count

'Copying frame coordinates
For Each ctl In MultiPage1.Pages(0).Controls
    If TypeOf ctl Is MSForms.Frame Then
        l = ctl.Left
        r = ctl.Top
        Exit For
    End If
Next
For Each ctl In MultiPage1.Pages(totalPageNum).Controls
    If TypeOf ctl Is MSForms.Frame Then
        ctl.Left = l
        ctl.Top = r
        Exit For
    End If
Next
End Sub

问题:如何在重新打开表单/文件时保存页面(这样我可以在第 4 步获得 2 页)

附:不幸的是,我还不能发布图片来更好地解释这个问题。

感谢您的帮助!

【问题讨论】:

  • 你能澄清一下吗?我真的不明白你在问什么。另外,我会尽快发布图片/代码。你不能只在这里索要代码。
  • 你好,布雷迪克!我已经添加了脚本代码和外部截图链接,希望这会更清楚。如果需要,我也可以自己上传 xls 文件。

标签: vba excel


【解决方案1】:

这样做的唯一方法是简单地隐藏用户窗体,而不是在 Excel 的同一会话中卸载它。如果您必须关闭 Excel 并重新打开它,则无法保存。

我建议将创建页面所需的信息保存在 VeryHidden 工作表上,并每次动态创建用户窗体。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多