vba - 使用 get-Function 将自定义类实例分配给变量
问题描述
我有两节课:
clsDataElement
Public dataA As String
Public dataB As String
Public dataC As String
cls接口
Private mDataElements() As clsDataElement
Private mCountOfDataElements As Integer
Private Sub Class_Initialize()
mCountOfDataElements = 0
End Sub
Public Sub addDataElement(dataElement As clsDataElement)
ReDim Preserve mDataElements(mCountOfDataElements)
Set mDataElements(mCountOfDataElements) = New clsDataElement
mDataElements(mCountOfDataElements).dataA = dataElement.dataA
mDataElements(mCountOfDataElements).dataB = dataElement.dataB
mDataElements(mCountOfDataElements).dataC = dataElement.dataC
mCountOfDataElements = mCountOfDataElements + 1
End Sub
Public Function getDataElement(Optional index As Integer) As clsDataElement
If Not index >= mCountOfDataElements Then
getDataElement = mDataElements(index)
End If
End Function
如您所见,该类clsDataElement
只是一些数据的容器。该类clsInterface
可以包含多个元素clsDataElement
现在,如果我想从接口类中读取一个数据元素,它就是行不通的。但是,我觉得这与以下事实有关,即我不能只分配自定义类:
Public Sub TestMyClass(myInterface As clsInterface)
Dim tmpDataElement As New clsDataElement
Set tmpDataElement = myInterface.getDataElement(0)
End Sub
所以在运行这段代码时我得到了错误
对象变量或未设置块变量
我确保 myInterface 中存储了多个数据元素。你有什么想法我做错了吗?
解决方案
获取元素时是否缺少“Set”关键字:
Public Function getDataElement(Optional index As Integer) As clsDataElement
If Not index >= mCountOfDataElements Then
Set getDataElement = mDataElements(index)
End If
End Function
推荐阅读
- reactjs - createPortal 作为子功能不起作用
- listview - 带有 Tiles 的 ListView 在 Flutter 中不起作用
- python - 在 Django 的其他模型方法中调用模型方法是一种好习惯吗?
- python - 如何修复“由于 EnvironmentError 无法安装软件包:[WinError 32]”
- c# - ListView 上奇怪的 ColorAnimation 和 MultiTrigger 行为
- release - Gitlab-ci 签署 maven 工件
- python - Django Channels websocket 通信不是真正异步的吗?
- c# - 用手指触摸旋转 3D 对象 Unity 3D
- google-sheets - 如何增加谷歌表格中单元格引用中的列值?
- exception-handling - Laravel 5.6 - 处理 Api 的内部服务器错误 (500) 的异常处理程序