Я не могу воспроизвести это, но позвольте мне сообщить, что я сделал, и, возможно, это поможет вам найти вашу проблему.
Вот код для Class1:
Public Function f() As Class2
Set f = New Class2
f.p = 42
End Function
и вот код для Class2:
Private p_
Public Property Let p(value)
p_ = value
End Property
Public Property Get p()
p = p_
End Property
Private Sub Class_Initialize()
Debug.Print "Class 2 init"
End Sub
Private Sub Class_Terminate()
Debug.Print "Class 2 term"
End Sub
Если я зайду в ближайшее окно и введу:
set c1=new Class1
, а затем
?c1.f().p
Я вернусь:
Class 2 init
42
Class 2 term
Таким образом, создается экземпляр Class2, его свойство 'p' записывается и читается, но затем VBA убивает его после выполнения этой строки, поскольку ни одна переменная не имеет ссылки на этот экземпляр.
Как я уже сказал, это не соответствует вашей проблеме, как описано. Возможно, мне не хватает некоторых моментов в деталях, но я надеюсь, что это поможет.
EDIT:
Чтобы пояснить, я имею в виду, что мой более простой пример вызова 'c1.f (). P' соответствует вашему
quantityOnHand = Macola.Item("12345").Location("A1").QuantityOnHand
но мой простой пример работает просто отлично. Итак, теперь у вас есть три ответа, которые составляют «нужно больше информации», но это интересная маленькая головоломка.
Если вы вообще не видите, что экземпляр ItemLocation создается, означает ли это, что вы также не видите вызов вашего метода Location из класса ItemMaster? Так что, возможно, проблема связана с размещенным кодом местоположения.