Столкнулся с интересной ситуацией: хотел "в лоб" померить длину числа и получил, что от разных типов переменных возвращается разное число. Приглашаю выполнить следующий код:
[vba]
Код
Sub Len_Test() Dim X, Y&, Z#: X = 363601: Y = 363601: Z = 363601 Debug.Print "Работаем с 6-ти значным числом:" Debug.Print "Len(Variant) = " & Len(X) ' Возвращает 6 Debug.Print "Len(Integer) = " & Len(Y) ' Возвращает 4 !!!??? Debug.Print "Len(Double) = " & Len(Z) ' Возвращает 8 !!!??? Debug.Print "Len(Variant to String) = " & Len(X & "") ' Возвращает 6 Debug.Print "Len(Integer to String) = " & Len(Y & "") ' Возвращает 6 Debug.Print "Len(Double to String) = " & Len(Z & "") ' Возвращает 6 End Sub
[/vba] Собственно, вопрос: а что происходит? =)
Всем привет!
Столкнулся с интересной ситуацией: хотел "в лоб" померить длину числа и получил, что от разных типов переменных возвращается разное число. Приглашаю выполнить следующий код:
[vba]
Код
Sub Len_Test() Dim X, Y&, Z#: X = 363601: Y = 363601: Z = 363601 Debug.Print "Работаем с 6-ти значным числом:" Debug.Print "Len(Variant) = " & Len(X) ' Возвращает 6 Debug.Print "Len(Integer) = " & Len(Y) ' Возвращает 4 !!!??? Debug.Print "Len(Double) = " & Len(Z) ' Возвращает 8 !!!??? Debug.Print "Len(Variant to String) = " & Len(X & "") ' Возвращает 6 Debug.Print "Len(Integer to String) = " & Len(Y & "") ' Возвращает 6 Debug.Print "Len(Double to String) = " & Len(Z & "") ' Возвращает 6 End Sub
[/vba] Собственно, вопрос: а что происходит? =)Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Если же аргумент имеет значение типа Variant, то функция Len обрабатывает его так же, как и значение типа String, и всегда возвращает число содержащихся в нем символов
И для Variant
Цитата
Если же аргумент имеет значение типа Variant, то функция Len обрабатывает его так же, как и значение типа String, и всегда возвращает число содержащихся в нем символов