A property or method call cannot include a reference to a private object, either as an argument or as a return value (Error 98)

Закрытые объекты никогда не должны передаваться за пределы проекта. Возможными причинами ошибки могут быть все следующие действия, которые запрещены:

  • Вызов клиентом свойства или метода внепроцессного компонента и попытка передать ссылку на закрытый объект в качестве одного из аргументов. Вызов клиентом свойства или метода внепроцессного компонента и попытка компонента возвратить ссылку на закрытый объект или назначить такую ссылку аргументу ByRef.

  • Вызов внепроцессным компонентом метода обратного вызова на своем клиенте и попытка передать ссылку на закрытый объект.

  • Попытка внепроцессного компонента передать ссылку на закрытый объект в качестве аргумента события, которое было им инициировано.

  • Попытка клиента присвоить ссылку на закрытый объект аргументу ByRef события, которое им обрабатывалось.

Обратите внимание, что, хотя Visual Basic не позволяет передавать ссылки на невизуальные закрытые объекты по процессам, существует ряд ситуаций, в которых Visual Basic не может обнаружить эту ошибку и, соответственно, предотвратить ее. Закрытые объекты не предназначены для использования за пределами проекта. Передача их клиенту может создавать угрозу стабильности работы программы и являться причиной несовместимости с будущими версиями Visual Basic. Если вы хотите передать свой собственный закрытый класс клиенту, установите для свойства Instancing значение, отличное от Private. Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh).

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.