gpt4 book ai didi

excel - 使用类的文本名称创建一个新对象

转载 作者:行者123 更新时间:2023-12-02 01:04:25 26 4
gpt4 key购买 nike

有没有办法通过使用类的文本名称将对象设置为类的新实例?

我将有一个类库,并且根据其他一些变量,我想在运行时获取这些类之一。

例如我有“CTest1”、“CTest2”、“CTest3”

我会有类似于下面的功能

Function GetTestClass(lngClassNo as long) as Object
Dim strClassName as String
strClassName = "CTest" & CStr(lngClassNo)
Set GetTestClass = New instance of class(strClassName)
End Function

最佳答案

您可以使用元编程来做到这一点,尽管它看起来确实像是一个黑客。下面是一个使用几个辅助函数的示例(为了简洁而省略):

Public Function CreateInstance(typeName As String) As Object
Dim module As VBComponent
Set module = LazilyCreateMPCache()

If Not FunctionExists(typeName, module) Then
Call AddInstanceCreationHelper(typeName, module)
End If

Dim instanceCreationHelperName As String
instanceCreationHelperName = module.name & ".GetInstanceOf" & typeName
Set CreateInstance = Application.Run(instanceCreationHelperName)
End Function

Sub AddInstanceCreationHelper(typeName As String, module As VBComponent)
Dim strCode As String
strCode = _
"Public Function GetInstanceOf" & typeName & "() As " & typeName & vbCrLf & _
"Set GetInstanceOf" & typeName & " = New " & typeName & vbCrLf & _
"End Function"
Call AddFunction(strCode, module)
End Sub

关于excel - 使用类的文本名称创建一个新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1057670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com