【发布时间】:2015-05-18 16:20:27
【问题描述】:
我最近发现了 VBIDE 库,但我还没有完全掌握它的所有功能。我想创建一个方法,该方法将根据在我的项目中找到的类实例化正确的类。适合作为候选实例化的类ImplementInterfaceA,而我要实例化的确切类具有属性MType,它返回Enumerated ValueCorrect。
所以总结一下我如何迭代我的项目中定义的类,以便找到返回Correct 属性MType 的类,并实例化该类。
到目前为止,我知道我可以使用以下代码迭代我的模块:
Dim Part As VBComponent
For Each Part In Application.VBE.ActiveVBProject.VBComponents
Debug.Print Part.Name
Next Part
我现在缺少什么,如何迭代每个类的方法/属性以找出这些方法返回的内容?
这是我需要找到的方法,它因返回的值而异:
Public Property Get InterfaceA_MType() As Model_Types
IModel_MType = Severity
End Property
所以你可以看到这个属性非常简单,我假设它会一直返回相同的值。
更新:Per Dough Gancy 的观察部分答案位于here
我可以使用ProcBodyLine(InterfaceA_MType) 和ProcCountLines(InterfaceA_MType) 来遍历程序行,匹配那些行与具有IModel_MType = Correct 的行匹配。
这仅省略了基于代码模块实例化类。我该怎么做?
【问题讨论】:
-
如果您还没有看过 Chip Pearson 的网站,这里有您需要的信息:cpearson.com/excel/vbe.aspx
-
@DougGlancy 谢谢!我实际上在找到我的答案之前看到了这个,但在你提出之前错过了答案(部分)!我会根据我的发现更新问题。
-
@RubberDuck 感谢您的意见。我可能错过了一些东西,但我无法在这两个问题中找到任何可以解决我的问题的问题this 问题是最接近的,除了
CallByName要求您拥有一个已经实例化的对象。我现在的问题是如何首先实例化该对象。 -
当心,即时编写和执行代码是使 VBE 崩溃的好方法...您知道 ;-)