Я наткнулся на какое-то поведение, которое я не понимаю. Рассмотрим следующую функцию:VBA Тип объекта
Function identity(n As Integer) As Integer
identity = n
End Function
Очевидно, что это не самая практичная функция, но она хорошо освещает мою проблему.
Это работает так, как я ожидал бы, просто возвращая входные данные, это целое число, в противном случае выдается ошибка.
Однако, если я изменю вывод как объект, я все равно ожидаю, что это сработает, поскольку, как я понимаю, целые числа являются объектами. Увы, вместо этого я получаю «ошибку в Value».
Это также происходит, если оба типа ввода и вывода изменены на объекты.
Функция проявляет поистине любопытное поведение, когда ввод изменен на объект, но выход остается целым числом. Если он вызывается из excel через '= identity (3)', это ошибки, но если он вызывается через '= identity (A1)', где A1 содержит 3, он возвращает правильное значение.
Может ли кто-нибудь объяснить, что происходит? Я новичок в VB, но я запрограммирован на разных языках ранее, и я никогда ничего подобного не видел ...
Это все еще не выполняется для '= identity (3)'. Есть ли какой-нибудь корневой класс, который я могу использовать? Я бы подумал, что это Object ... – DomJack
Я добавил дополнительные сведения об объекте и не-объекте в VBA – barrowc