Прежде всего, newParent
является локальным для функции AddParent
, поэтому AddChild
не имеет ее видимости. Чтобы это исправить, вам нужно переместить Dim newParent As clsParent
из функции AddParent
и сделать ее переменной уровня модуля. Предполагается, что AddParent
и AddChild
находятся в одном модуле.
Во-вторых, newParent.Add newChild
будет работать, только если вы написали метод Add
в clsParent
. Если нет, то вам нужно написать один. Я понятия не имею, как вы планируете использовать его, но следующий код довольно общий и должен направить вас в правильном направлении. Этот код будет идти в модуле clsParent
:
Private m_oChildren As Collection
Sub Add(Child As clsChild)
If m_oChildren Is Nothing Then Set m_oChildren = New Collection
m_oChildren.Add Child
End Sub
Это создаст личную коллекцию clsChild
объектов, которыми вы будете манипулировать, используя дополнительные методы, или открывайте через Property Get
.
ОБНОВЛЕНИЕ : Чтобы ответить на ваш комментарий, если вы хотите сохранить нескольких родителей, вам нужно добавить коллекцию для этого. Например:
Dim Parents As Collection
Public Function AddParent()
Dim newParent As clsParent
Set newParent = New clsParent
'Add Parent Properties'
With frmAddParent
newParent.Name = .cboParentName.Value
newParent.Width = .txtParentWidth.Value
newParent.Xslope = .txtParentCrossSlope.Value
End With
'Initialize the collection of Parents if it has not already been done'
If Parents Is Nothing Then Set Parents = New Collection
'Add the new parent object to the Parents collection'
Parents.Add newParent
'show the form for creating the Child Object'
frmAddLaneMaterial.Show
End Function
Public Function AddChild()
Dim newChild As clsChild
Set newChild = New clsChild
'Add child Properties'
With frmAddChild
newChild.Name = .cboParentName.Value
newChild.LayerNumber = .cboLayerNum.Value
newChild.xSlope = newParent.Xslope
End With
'Add the new child to the most recently added parent in the parent collection'
Parents.Item(Parents.Count).Add newChild
End Function
Конечно, теперь у вас есть еще одна коллекция для отслеживания. Это действительно сложно отслеживать несколько экземпляров форм (что, я полагаю, и есть то, что вы делаете), и легко неожиданно оказаться в неуправляемом беспорядке.