我是对象和 Excel VBA 的新手,如果这是一个多余的问题,我深表歉意,但我在过去 2 天里试图加载一个具有存储在 Excel 工作表中的属性的新对象。
我有大约 60 个属性需要加载。我的主子使用类中的 Load 子例程加载每个新实例。
Sub Main()
Dim loadedCompound As Compound 'my class
Set loadedCompound = New Compound
loadedCompound.Load Selection 'a sub in Compound class
我尝试创建一个数组,其中每个变量名作为一个级别,并使用链接到数组和偏移值的迭代器循环遍历数组。但是 VBA 不允许我使用数组字符串作为变量。
Sub Main()
Dim loadedCompound As Compound 'my class
Dim arrayProperties() As String 'Array of the class property names
Set loadedCompound = New Compound
arrayProperties =
Split(",CDKFingerprint,SMILES,NumBatches,CompType,MolForm",",")
For i = 1 To UBound(arrayProperties)
loadedCompound.arrayProperties(i) = Selction.Offset(0, i)
Next i
目前,我手动加载每个变量,如下所示,但它有很多冗余代码并且可读性差。
Sub Load(ARID As Range)
pCDKFingerprint = ARID.Offset(0, 1)
pSMILES = ARID.Offset(0, 2)
pNumBatches = ARID.Offset(0, 3)
pCompType = ARID.Offset(0, 4)
pMolForm = ARID.Offset(0, 5)
pMW = ARID.Offset(0, 6)
pChemName = ARID.Offset(0, 7)
pDrugName = ARID.Offset(0, 8)
pNickName = ARID.Offset(0, 9)
pNotes = ARID.Offset(0, 10)
pSource = ARID.Offset(0, 11)
pPurpose = ARID.Offset(0, 12)
pRegDate = ARID.Offset(0, 13)
pCLOGP = ARID.Offset(0, 14)
pCLOGS = ARID.Offset(0, 15)
变量的数据以行格式存储在工作表中。
有没有一种简单简洁的编码方式?