【问题标题】:Format UserForm object by a macro and preserve formatting通过宏格式化 UserForm 对象并保留格式
【发布时间】:2020-01-11 17:24:00
【问题描述】:

我使用宏通过UserForm_Initialize / UserForm_Activate 事件来定位和调整几十个已经存在的UserForm 元素,主要是CommandButton 对象。

问题是这些事件只是临时改变弹出窗口的布局和格式:

并且对对象本身没有影响:

我想更改UserForm 对象的格式和位置,以便在实际查看宏当前呈现给用户的布局的同时进行添加。有没有可能?

【问题讨论】:

  • The problem is that these events only temporarily change layout and formatting for pop-up window and have no effect on object itself. - 你能再解释一下吗?哪个弹出窗口?究竟对您正在寻找的对象有什么影响?
  • 我的意思是弹出窗口,它从UserForm_Initialize / UserForm_Activate 出现在屏幕上,并通过我的代码格式化显示UserForm。我希望将格式永久应用于底层UserForm。由于按钮未调整大小且未正确定位,当我打开对象时看起来像一团糟,而且我不想每次更改布局概念时手动进行如此多的更改。
  • 我不确定我是否理解。为什么不在 VBE 中创建用户窗体?为什么以编程方式进行?如果您需要它“粘贴”我想这意味着您希望它在下次打开表单时保持不变?您是否要求在用户表单激活之间保持会话状态?即使在工作簿关闭/打开之间?
  • 可以在Workbook.open中添加
  • 您是在询问“设计时间”修改吗?可能是这样的? thespreadsheetguru.com/the-code-vault/2014/3/3/…

标签: excel vba


【解决方案1】:

这对我有用:

Sub Tester()

    Dim myUserform As Object

    Set myUserform = ThisWorkbook.VBProject.VBComponents("ExcelDatePicker")


    With myUserform
        .Activate '< added from link below
        .Properties("Caption") = "Testing"
        .Properties("Width") = 200
        .Properties("Height") = 200
    End With

End Sub

标题是UserForm 的属性,而不是Designer 的属性

EDIT - 从 OP 更新: 最后,我收到了有关如何解决这些问题的答案: UserForm error: Method 'Properties' of object '_VBComponent' failed

【讨论】:

  • 是的,我在之前的评论中没有使用Designer 代替Properties。从模块运行您的代码时,我实际上缩小了问题的范围 - 当我运行 1 次时它适用于我,而在第 2 次运行时它失败并出现与 Properties 一致的错误。
  • 是的,我误读了您对Designer 的评论,但我可以多次运行我的代码而不会出现任何错误:我不知道您的情况是什么...也许您可以编辑您的包含您当前代码的问题?
  • 实际上我还没有描述究竟是什么导致了问题,但我能够发现问题:正常运行您的代码,然后更改 Width 或 Height 参数会触发错误,但早在标题行,老实说,我很难找到确切的模式,因为有时更改不会触发错误,有时打开文件并使用现有值运行宏会触发它。
  • 最后我收到了关于如何解决这些问题的答案:stackoverflow.com/questions/50582890/… 如果您在您的回答中提到“.Activate”作为对使用此方法可能出现的错误的补救措施,我很乐意接受.
  • 这是我为另一个完全关于我收到的错误的问题所做的,但在这个问题中,您提供了正确的解决方案,这有时会导致 VBA 错误,并且可能不会出现在每个人的机器上。 .Activate 只是一个添加,它将使 Designer 上的操作稳定。
猜你喜欢
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
  • 2017-02-03
  • 1970-01-01
  • 2017-12-21
  • 2021-10-20
  • 1970-01-01
相关资源
最近更新 更多