Sha*_*i W 3 excel vba class excel-vba
我有一个包含自身集合的类.(顶级类包含集合中详细实例的摘要版本.)
目前该集合是一个公共变量,因为我还没有弄清楚使用私有变量的所有细节.我可以稍后解决.
如何将项目添加到集合中?我因缺少对象变量而收到错误91.
感谢您之前的所有帮助.我一直在重新调整我的代码以更广泛地使用类,并且事情正在清理它真的很棒.
类cPE
Public PE_Details As Collection ' collection of cPE
Public PE_ID as integer
Public PE_ID_Index as integer
' Add to the detailed list of PE's
Public Function AddPEDetail(ByRef cPE_Detail As cPE)
PE_Details.Add cPE_Detail ' ERROR: Object variable or With
' block variable not set
End Function
Run Code Online (Sandbox Code Playgroud)
调用它的模块代码如下:
Dim clsPE As cPE ' Summary version of PE
Dim clsPE_Detail As cPE ' A detailed PE
Dim i as Integer
Set clsPE = New cPE ' This is the PE which will also contain a list of detailed PEs
' Add three instances of detailed cPE to the summary cPE object
for i = 1 to 3
Set clsPE_Detail = New cPE
clsPE_Detail.PE_ID = clsPE.PE_ID
clsPE_Detail.PE_ID_Index = clsPE.PE_ID_Index
'etc.
clsPE.AddPEDetail clsPE_Detail ' see above
next i
Run Code Online (Sandbox Code Playgroud)
在cPE类中添加方法Class_Initialize并初始化变量.正如你现在所拥有的那样,你永远不会设置PE_Details,因此它是null/nothing
Private Sub Class_Initialize()
set PE_Details = New Collection
End Sub
Run Code Online (Sandbox Code Playgroud)