я не могу показаться, чтобы найти причину такого поведения ...VBA инстанцировании второй из двух классов в форме пользователя триггеров прекращается первого класса
У меня есть форма пользователя, где я два класса создание экземпляра I» созданный, который будет застрелен в коллекцию. Когда вы переходите, когда код попадает на Initialize
sub второго класса, первый класс завершается. Это происходит внутри формы Initialize
. Вот несколько примеров кода:
Private ClaimData As ClaimDataCls 'Class 1
Private Claims As Collection
Public Sub UserForm_Initialize
Set ClaimData = New ClaimDataCls 'Class 1 initialization
Set Claims = New Collection
Dim Counter As Integer
Dim Claim As ClaimsCls 'Class 2
For Counter = 1 to 10
Set Claim = New ClaimsCls '<-- Here is where Class 1 hits terminate
'Put Data into Claim
Claims.Add Claim
Next Counter
Я не призываю прекратить, и я не вижу, как мой исходный класс выходит за рамки здесь. Так в чем заключена сделка?
EDIT: Итак, я понял это и разместил ответ ниже, чтобы закрыть вопрос. С моей стороны это беспорядок, и вы можете прочитать подробности ниже.
Я попытался воссоздать поведение, используя данный код, и 2 класса с ничего, кроме «Debug.Print» Class1 Init »и аналогичных операторов в подсистемах' initalize' и 'terminate'. Можете ли вы разместить свой 'Class_Terminate()' sub для 'ClaimsCls' (класс 2)? – Evan
В коде нет ничего, что могло бы объяснить поведение, которое вы видите, поэтому, вероятно, есть какой-то другой код где-то еще, что является причиной ... –
Я понял это. Это была странная ошибка. Это была совершенно несвязанная ошибка, и я думаю, что VBA просто завершает все существующие экземпляры класса, прежде чем появляться сообщение об ошибке в этом случае, которое я считал немного странным. Но это был хороший опыт обучения. – MattB