Страницы: 1
RSS
О чем ошибка: Expression too complex (Err 16)
 
Доброго всем дня!

Столкнулся с ошибкой №16 "Expression too complex".
Прочитал хелп и описания Майкрософт, но всеравно не могу понять почему вылазит данная ошибка??

Пожалуйста, поскажите кто знает

Заранее спасибо!!
 
У Вас в коде используется Not Not ИмяМассива для проверки инициализации динамического массива. Это, к сожалению, не фича VB (VBA), а баг, использование которого приводит к ошибкам. Попробуйте проверку проводить по-другому - через перехват ошибки при обращении к массиву.
 
Вот это дааа...
Я нашел это на каком-то форуме, когда искал как проверить не пуст ли массив.

Спасибо, сейчас попоробую.

P.S. Из Вашего совета надо полагать стандартного варианта на проверку "пустотности" массива нет?
 
Можно использовать такую функцию:
Код
' Выдает число размерностей аргумента:
' >0 число размерностей массива
' 0  пустой массив размерности 1 (верхняя граница меньше нижней)
' -1 массив не инициализирован (отсутствует информация о размерностях)
' -2 аргумент не является массивом
Function nDims(arr) As Long
    Dim n As Long, i As Long
  
    If Not IsArray(arr) Then
        nDims = -2
        Exit Function
    End If
  
    On Error Resume Next
    nDims = -1
    For n = 1 To 99
        i = UBound(arr, n)
        If Err.Number <> 0 Then
            Exit For
        End If
        nDims = n
    Next n
    On Error GoTo 0
    If nDims = 1 Then
        If LBound(arr) > i Then
            nDims = 0
        End If
    End If
 
End Function

Sub test()
  Dim a, b(1, 2, 3), c()
  Debug.Print nDims(a), nDims(b), nDims(c), nDims(Array(1, 2)), nDims(Array())
End Sub
Владимир
 
Спасибо всем!
Ошибка таки была из-за использования Not Not

Вопрос решен - тема закрыта.
Страницы: 1
Наверх