当前位置:  开发笔记 > 后端 > 正文

McAfee从VBA模块中删除代码

如何解决《McAfee从VBA模块中删除代码》经验,为你挑选了1个好方法。

我正在尝试编写一个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方法添加的新标签或按钮?



1> Joel Spolsky..:

您不应该通过编写创建控件的代码来生成新标签.

您应该使用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

如果要创建新添加的控件的动态数组,则需要创建一个小包装类.示例代码在这里.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有