gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:58:05 25 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

最佳答案

CallByName功能可以帮助你。假设您的项目中有一些类模块:clsSample0 , clsSample1clsSample2 .添加一个名为 clsSpawner 的新类模块,它将所有目标类列为具有相同名称的公共(public)变量,并用 New 声明关键词:

Public clsSample0 As New clsSample0
Public clsSample1 As New clsSample1
Public clsSample2 As New clsSample2

在标准模块中添加 Function Spawn()代码:

Function Spawn(sClassName) As Object

Set Spawn = CallByName(New clsSpawner, sClassName, VbGet)

End Function

使用如下代码对其进行测试:

Sub TestSpawn()

Dim objSample0a As Object
Dim objSample0b As Object
Dim objSample1 As Object
Dim objSample2 As Object

Set objSample0a = Spawn("clsSample0")
Set objSample0b = Spawn("clsSample0")
Set objSample1 = Spawn("clsSample1")
Set objSample2 = Spawn("clsSample2")

Debug.Print TypeName(objSample0a) ' clsSample0
Debug.Print TypeName(objSample0b) ' clsSample0
Debug.Print objSample0a Is objSample0b ' False
Debug.Print TypeName(objSample1) ' clsSample1
Debug.Print TypeName(objSample2) ' clsSample2

End Sub

它是如何工作的? Spawn函数实例化 clsSpawner并调用 clsSpawner返回请求属性的实例,实际上是 clsSpawner由于使用 New 声明,instance 创建了目标类的新实例关键字并返回引用。

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

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