Я знаю, что есть тонны нитей и вопросов об этом, и это довольно очевидно, как правило, где ошибка. Большинство людей не используют ключевое слово SET при перемещении объектов. Я.Получение «Недопустимое использование свойства» при использовании набора свойств в VBA
Вот что происходит:
Это в листе первенствовать поэтому я сделал небольшой набор функций для отслеживания столбцов и сделать индекс, так что каждый раз, когда приложение запускается он будет индексировать столбцы поэтому я могу делать такие вещи, как .Cells(row_num, pCust_index("custID"))
в случае изменения столбца.
У меня есть форма под названием custContagions. Это просто небольшое модальное окно, которое позволяет пользователям добавлять/удалять/редактировать заражающий статус клиента. Он содержит свойство:
Private pCust_index as dictionary
Он также содержит это свойство сеттер:
Public Property Set set_cust_index(ByRef custIndex As Dictionary)
Set pCust_index = New Dictionary
Set pcust_index = custIndex
End Property
Довольно прямо вперед правильно? Принимает объект словаря, сбрасывает мой индекс и указывает на существующий переданный объект.
Теперь на форме вызова у меня есть другая сторона:
Private Sub newCustContagious_LBL_Click()
Dim contForm as New custContagions
Call contForm.set_cust_index(pCust_index) 'note pCust_index is a private here too
Call contForm.Show
...
Я получаю Недопустимое использование ошибок компилятора свойств при вызове set_cust_index.
Что я пропустил?
@ словарь, отбрасывающий, то есть намеренный очистить существующий, я полагаю, что установка в NULL или NOTHING была бы лучшим выбором. Я вижу, что происходит сейчас, я думаю. Я привык к PHP, в котором я делаю функцию, у кого есть работа, она должна быть набором/get, а не отдельным ароматом sub. Попробуй это сейчас. – meteorainer
@meteorainer Тот факт, что вы назначаете объектную переменную чему-то еще, уже очищает ссылку на предыдущий объект. Если ссылок на этот объект больше нет, он будет уничтожен. Если есть другие ссылки на этот объект, он не будет уничтожен независимо от того, установите ли вы какую-либо другую переменную. – GSerg
Работал как шарм. +1 к вам. Пометка как решение моего отсутствия надлежащего управления классами. Благодаря! – meteorainer