Использование классов в VBA обычно является хорошей практикой в случае, если это не одноцелевое решение или класс не содержит слишком много закрытых атрибутов, потому что если вы хотите придерживаться правил ООП и обеспечить безопасность своего класса, вы должны объявить все свойства Let и Get для всех приватных атрибутов класса. Это слишком много кода, если у вас есть более 50 личных атрибутов. Еще одна негативная сторона использования классов в Excel заключается в том, что VBA не полностью поддерживает ООП. Здесь нет полиморфизма, перегрузки и т. Д.) Даже если вы хотите использовать наследование, вы должны объявить все атрибуты и методы исходного класса в унаследованном классе.
Так что в этом случае я бы предпочел решение, предложенное Жаном-Франсуа Корбеттом или GSeng, т.е. присвоение пустой переменной того же UDT, что и переменная, которую вы хотите очистить, или использование функции, которая мне кажется немного более элегантное решение, потому что оно не зарезервирует постоянную память для переменной emtpy вашего типа UDT.