我正在尝试编写一个Excel模块,它在设计时以创建的形式动态地在新对象中插入代码.
我正在使用此代码,其中"Code"包含一个字符串,其中包含应该进入DstrFiles对象的实际代码.
Dim DstrFiles As Object Set DstrFiles = ThisWorkbook.VBProject.VBComponents("DistributeFiles") With DstrFiles.CodeModule .InsertLines .CountOfLines + 1, Code End With
我的问题是,当我使用.InsertLines时,McAfee会从我的模块中删除整个代码,有没有办法解决这个问题?
首先,我创建标签:
Form1.Controls.Add("Forms.Label.1", "Label1", True)
然后我使用.InsertLines创建一些与Label一起使用的代码.
例如,当有人点击它时,我希望标签的背景颜色变为红色.使用".InsertLines"很容易实现这一点.
解决这个问题的一个丑陋方法是事先创建一堆代码,在后台准备好,然后限制可以动态创建的标签数量. - 我希望不会那样.
我一直在四处走动,这似乎是McAfee的一个已知问题.
有没有人知道一种创建动态用户表单的方法,可以将代码添加到使用Contrls.Add方法添加的新标签或按钮?
您不应该通过编写创建控件的代码来生成新标签.
您应该使用Controls集合上的.Add方法来创建新标签.
例如:
UserForm1.Controls.Add("Forms.Label.1", "foo", True)
您可以WithEvents
用来获取活动.
例如,在UserForm1中,
Public WithEvents a As MSForms.Label Private Sub a_Click() MsgBox "label clicked" End Sub Private Sub CommandButton1_Click() Set a = UserForm1.Controls.Add("Forms.Label.1", "foo", True) a.Visible = True a.Caption = "Hi There" End Sub
如果要创建新添加的控件的动态数组,则需要创建一个小包装类.示例代码在这里.