Подтвердить что ты не робот

VBA: как проверить соответствие объекта (независимо от того, ссылаются ли две переменные на один объект)

Каков оператор или функция для проверки того, относятся ли к одному объекту две переменные одного и того же типа объекта? Я пробовал

If myObject = yourObject Then

Но получить объект 438 ошибки времени выполнения не поддерживает это свойство или метод. Я предполагаю, что говорю мне переопределить оператор '=', чтобы проверить, имеют ли все поля двух объектов одинаковое значение. Но я хочу проверить, являются ли они одним и тем же объектом.

4b9b3361

Ответ 1

Я предполагаю, что говорю мне переопределить оператор '=', чтобы проверить, имеют ли все поля двух объектов одинаковое значение.

Нет, он сообщает вам, что объекты не имеют свойства по умолчанию, которое было бы вызвано иначе, а полученные результаты сравнивались.

Вы проверяете ссылочное равенство с помощью Is

If myObject Is yourObject Then 

Ответ 2

Вам нужно как-то сериализовать объекты, а затем сравнить атрибуты по значениям атрибутов. Оператор is является настолько глупым, насколько это возможно, он соответствует, только если другой объект является тем же экземпляром, назначенным сравниваемой переменной. Я предлагаю использовать библиотеку jsonStringify. Я адаптировал его для своего проекта с открытым исходным кодом DexTools.xlam https://github.com/dexterial/Dextools/tree/master/Main, начиная с анализа JSON в Excel VBA. Он имеет гораздо больше дополнительных функций, так как я добавил довольно много других вариантов сериализации/хэширования объектов Excel, и это сделано с помощью разработки, основанной на тестировании vba, которую включает DexTools. Это все еще в стадии разработки, поэтому не ожидайте чудес