2015-03-03 2 views
3

Я хочу сделать локальную версию IsEmpty() в классе, как это:Как перегрузить функции из стандартной библиотеки VBA, например IsEmpty()?

Public Dict As Dictionary 

Public Function isEmpty(columnName As Variant) As Boolean 
isEmpty = IsEmpty(Dict(columnName)) 
End Function 

Это для сокрытия информации, так что я могу назвать

classInstance.isEmpty("someField") 

вместо

isEmpty(classInstance.Dict("someField")) 

и, следовательно, не выставлять внутреннюю структуру данных класса.

Но проблема заключается в том, что версия isEmpty(), что я объявил, кажется, перекрывая любые ссылки на версию библиотеки VBA из IsEmpty(), потому что это генерируя Out of stack ошибки и сбой Excel. Я предполагаю, что это связано с тем, что вызов isEmpty = IsEmpty(...) вызывает бесконечную рекурсию.

Есть ли способ, которым я могу прямо ссылаться на стандартную версию IsEmpty(), которую я хотел бы назвать здесь?

ответ

6

Да. Явно ссылаюсь на стандартную библиотеку.

VBA.IsEmpty() 

Бонус:
IsEmpty фактически принадлежит Information объекта. A полностью Явный вызов выглядит следующим образом.

bool = VBA.Information.IsEmpty(var) 

object browser

Смежные вопросы