保存代码生成的表单元素

时间:2014-10-14 12:33:35

标签: excel vba excel-vba

VBA,Excel 2010。

假设:

  1. MultiPage Userform
  2. 脚本,它制作页面的副本(基于this question
  3. 过程:

    1. 打开表单(1页多页,screenshot 1);
    2. 通过运行脚本复制页面(2页多页,screenshot 2);
    3. 关闭表单;
    4. 重新打开表格(再次只有1页,与第1步相同);
    5. 脚本代码:

      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页)

      P.S。不幸的是,我还没有发布图片来更好地解释这个问题。

      感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

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