【问题标题】:Userform not triggering Initialize or Activate event用户窗体未触发初始化或激活事件
【发布时间】:2013-10-24 11:28:43
【问题描述】:

我在我的工作表中保留了一个用户表单控制按钮来启动一个宏,该宏又显示一个用户表单,在表单中我希望在复选框中显示打开的文件(使用 Workbooks 集合)。我希望运行一个仅对用户选择的文件执行操作的宏。

所以对于我工作表中的按钮,我分配了以下宏

Private Sub Button2_Click()

    Load MyForm

    MyForm.Show

End Sub 

起初我将下面的代码保留在我的宏子所在的模块中。由于它不起作用,我右键单击用户表单并选择查看代码并将下面的代码保留在那里。但它仍然显示相同的静态设计用户表单,而不是动态的。我在加载 Myform 和 MYform.Show() 处都保留了断点,并且我逐步执行了代码。它根本没有进入初始化或激活方法。

Private Sub MyForm_Activate()
  'for checking the whether this method is called or not I am trying to change caption
  MyForm.LabelSelectFile.Caption = "dhfdfldkfldzjf;zdfkz;d"

  Dim mymyWorkBook As Workbook
  For Each mymyWorkBook In Workbooks
     'code for creating checkbox based on the file name displayed by the workbook collection      
  Next mymyWorkBook
End Sub

我不明白为什么该事件没有被触发。请帮助我克服这个问题。提前致谢

【问题讨论】:

    标签: vba excel userform


    【解决方案1】:

    即使表单名称是MyForm,您仍然需要使用userform

    '~~> in your worksheet
    Private Sub Button2_Click()
        MyForm.Show
    End Sub
    
    '~~> In the userform code area
    Private Sub UserForm_Initialize()
        '~~> Your code here
    End Sub
    

    Private Sub UserForm_Activate()
    
    End Sub
    

    最好总是从下拉列表中选择事件,而不是输入它

    【讨论】:

    • 谢谢,我能够完成宏。我昨天才开始编写用户表单,我不知道名称应该始终是用户表单。由于按钮单击处理程序是 button1_Click(),我认为它将适用于初始化事件。有趣的是,编写动态复选框并从中读取所需的时间比克服这个抱怨要少。
    猜你喜欢
    • 2013-05-20
    • 2013-06-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    相关资源
    最近更新 更多