Находят ли другие люди такое поведение? Я использую Excel 2007 под Windows 7.
В Excel VBA:
Public Function bTest_IsText(vArg As Variant) As Boolean
bTest_IsText = WorksheetFunction.IsText(vArg)
End Function
Public Function nTest_VarType(vArg As Variant) As Integer
nTest_VarType = VarType(vArg)
End Function
В листе Excel:
A1: =REPT("-", 255)
A2: =REPT("-", 256)
A3: =ISTEXT(A1)
B3: =bTest_IsText(A1)
C3: =TYPE(A1)
D3: =nTest_VarType(A1)
A4: =ISTEXT(A2)
B4: =bTest_IsText(A2)
C4: =TYPE(A2)
D4: =nTest_VarType(A2)
Ячейки A3: результат D4:
TRUE TRUE 2 8
TRUE FALSE 16 8
Возвращаемые значения 2 и 16 из type()
имеют , означающее «Текст» и «Значение ошибки», соответственно. Возвращаемое значение 8 (= vbString
) VarType()
имеет , означающее"Строка".
Похоже, что type()
в Excel и WorksheetFunction.IsText()
в Excel VBA не работают, если переданный им аргумент содержит более 255 символов. IsText()
в Excel не имеет этого ограничения. Обходной путь для сбоя WorksheetFunction.IsText()
заключается в проверке на VarType(...) = vbString
(что может быть лучше в любом случае).
Это законные ошибки или я что-то не так делаю?
Есть ли место, где компилируются проверенные ошибки, поэтому мне не нужно удивляться, что я схожу с ума, когда вижу что-то подобное?