Страницы: 1
RSS
При транспозиции массива возникает ошибка 13 Type mismatch
 
Добрый день, уважаемые форумчане.
Во время транспозиции массива с данными возникает ошибка Runtime error 13 Type mismatch. Не могу понять в чем причина, искал во многих источниках все равно, не могу понять причину и как ее излечить. В VBA новичок, поэтому и прошу помощи.
При чем макрос нормально отрабатывает если количество записей в массиве до 40-50К, как только их становится больше 60К возникает эта ошибка. Подозреваю что где-то в размерностях натупил, но найти не могу.

Ошибка возникает в этом месте в коде - строка № 80.

Код
        x = UBound(test2)
            test2 = Application.Transpose(test2)
            ReDim Preserve test2(1 To 3, 1 To x - them + 1)
            test2 = Application.Transpose(test2)
            test2(UBound(test2), 1) = Empty
            test2(UBound(test2), 2) = Empty
            test2(UBound(test2), 3) = Empty
    Loop

 
Подскажите, пожалуйста, в чем ошибся.
 
Помнится transpose не работало с массивами более 65к строк. А на 2000 экселе уже и на паре тысяч загибалось.
 
.
Изменено: NinjaMan - 19.09.2014 11:42:37
There is no knowledge that is not power
 
Цитата
Hugo пишет:
Помнится transpose не работало с массивами более 65к строк. А на 2000 экселе уже и на паре тысяч загибалось.
Жаль  :(  То есть, как вариант попробовать создавать дополнительный массив с размерностью обратной исходному массиву и циклом перекидывать туда значения? Как Вы думаете ошибка исчезнет?
А затем обратно циклом вернуть к необходимому значению.
Изменено: ASKer_mk - 19.09.2014 11:51:28
 
Файл не смотрел - но может быть можно сразу сохдать массив по максимуму и заполнять? Лишнее в конце откинуть. Будет намного быстрее, без лишних действий.
 
Спасибо Hugo за разъяснения относительно transpose. Выкрутился созданием дополнительного массива и при помощи него изменил размерность основного.
Всем спасибо за помощь.
Страницы: 1
Наверх