Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
ошибка : out of stack space
 
Разобрался, в чем дело... когда начал код улучшать, нашел место, где процедуры вызывают одна другую поочередно...
ошибка : out of stack space
 
Цитата
Игорь написал: Массивы такие надо передавать как byRef в другие функции
Так вроде бы по умолчанию они так и передаются, нет разве?.. И вроде как лишних копий не делается...
Изменено: denis76 - 01.06.2016 22:06:07
ошибка : out of stack space
 
Цитата
Игорь написал: Причина - большой размер массивов
Про массивы - да, все так, но ведь он не выдает Out of memory (это прошло с установкой 64-битной версии), а вот на стек именно ругается-то... А каков этот стек и его допустимый размер - мне пока неведомо...
ошибка : out of stack space
 
Цитата
kalbasiatka написал: Нет файла - нет идей, что тут не понятно.
Глубоко сомневаюсь, что данный файл кому-то разбирать охота будет... но думаю, что основные варианты можно предположить и без его досконального исследования...
ошибка : out of stack space
 
Хорошо...

Вот, смотрю, там 5 случаев указано, к моему может, видимо, это относиться:
Цитата
...Your local variables require more local variable space than is available.Try declaring some variables at the module level instead. You can also declare all variables in the procedure static by preceding the Property,Sub, or Function keyword with Static. Or you can use the Static statement to declare individual Static variables within procedures...
Все равно странно, больше всего ведь места массивы занимают, но не на них ошибка вылезает...
И как, получается, каждую что ли переменную надо в начале модуля объявлять заранее? А потом что, уничтожать надо или как?

Еще вот, смотрю в редакторе VBA - там такая закладка Call stack - почему-то в ней список в 50 с лишним процедур, когда у меня столько их одновременно не вызывается... и некоторые повторяются почему-то...
И вообще, как-то размер и заполненность этого стека можно ли узнать и регулировать?..
ошибка : out of stack space
 
Добрый день!

Столкнулся неожиданно с такой ситуацией: при вызове вложенной процедуры в VBA появляется указанное сообщение об ошибке:
Код
... out of stack space...

Собственно говоря, процедура довольно громоздкая, обрабатывает и пересчитывает массивы данных размером примерно 10000*200 ячеек... хотя работала до сего времени вполне нормально...

Собственно говоря, в чем здесь может быть причина появления такого сообщения:
- много переменных?
- большой размер переменных (массивов)?
- большое кол-во вызовов функций?
- вызов функций с аргументами в виде больших массивов (используется несколько раз такое)?

Какие тут способы решения имеются - может, надо как-то уничтожать переменные после использования, очищать стек - как это сделать?... Может, какие-то параметры в реестре надо подправить или еще где?.. Что известно по данному вопросу уважаемым специалистам?..

Спасибо заранее...
Вылетает Excel с базой 45 Мб, временами
 
Примерно такая ситуация (вылетает при открытии 45Мб файл в Ехсеl2013), решилась следующим образом - открыл данный файл в 2007 версии, он там написал, что не может прочитать какие-то данные, и что-то там из него при восстановлении удалил, после этого восстановленный файл сохранил, и он теперь в 2013 версии нормально открывается... пока по крайней мере...
Изменено: denis76 - 13.10.2015 16:55:42
можно ли установить надстройки PowerPivot в Excel 2013 отдельно?
 
Евгений, не выходит почему-то, пишет:
...powerpivotexcelclientaddin.dll не является допустимой надстройкой officeю...
Кто-нибудь знает, как ее установить-то?..
VBA вызов функции из надстройки
 
Обычно вызываю, типа :

a=f1(b)

Пишет -

Compile error:
Sub jr Function not defined
VBA вызов функции из надстройки
 
Нет, даже Public специально приписал, не помогает...
Модуль - самый стандартный, Module1 называется... Пока что-то не особо понятно, почему оно так...
VBA вызов функции из надстройки
 
Да, Application.Run работает, все нормально, спасибо большое...

Что-то я сразу не догадался его использовать...

Остается правда вопрос, почему потребовалось именно так вызывать, а по-обычному не сработало?..
VBA вызов функции из надстройки
 
Цитата
KuklP пишет:
Код
 MsgBox Application.Run("Надстройка.xlam!ИмяФункции", параметры, параметры) 

Только увидел...
Сейчас попробую...
VBA вызов функции из надстройки
 
И как это сделать?..
Насколько понимаю из теории, все функции из подключенных настроек должны быть видимы, также как и функции из соседних модулей исходной книги (если там специально Private не прописано)...
Однако почему-то этого не наблюдается...
Как-то по-иному обращаться - как? Пример есть какой-нибудь?..
VBA вызов функции из надстройки
 
День добрый!

Такая вот странная проблема возникла:

Имеется подключенная надстройка (мною написанная) ***.xlam, в ней прописаны некоторые функции (работа с текстом)...
Когда я их вызываю из ячейки листа открытой книги, то все работает, а когда пытаюсь сделать тоже самое из кода VBA, то он их в упор не видит...

Кто-нибудь может подсказать, с чем это может быть связано?..
VBA - самопроизвольное прерывание выполнения программы
 
Хорошо, посмотрю... Хотя сейчас вот пока все нормально работает... Странно, что появляется это неизвестно из-за чего, т.е программа работает-работает несколько раз до конца, потом чего-то там редактируешь, и начинаются прерывания, причем никакой ошибки-то не выдает, жми 1000 раз Continue, или сколько там надо, и все до конца доработает, если не задолбаешься жать-то...
Причем закрыть и открыть Excel не помогает, только перезагрузка...
Изменено: denis76 - 27.02.2013 16:23:50
VBA - самопроизвольное прерывание выполнения программы
 
Такая вот проблема временами появляется - запускаю какую-нибудь процедуру на VBA, обычно весьма объемную, и вдруг она сама начинает прерываться - "Code has been interrurted", нажимаю Continue, и через пару секунд опять тоже самое... ну и так до упора, проходит только при перезагрузке компьютера...
Может, кто-нибудь знает причину этого дела, и возможно ли с ним бороться?..
VBA - присвоение значений ячеек с другого листа
 
Код кстати не в модуле листа, в обычном модуле...
VBA - присвоение значений ячеек с другого листа
 
Цитата
ber$erk пишет:
явно Вы указываете только Sheets("дд").Range, а вот Cells(2, 1) и Cells(h, 2) это уже ячейки ТЕКУЩЕГО листа

Понятно... хотя на мой взгляд нелогично это... да и то, что With даже не помогает...
Ну ладно, а то думал, может я чего-то элементарного не понимаю, а раз так сделано, то вопросы к разработчикам... будем
Цитата
Alex K пишет:
воспринимать как данность...



Всем спасибо за пояснения...
VBA - присвоение значений ячеек с другого листа
 
Цитата
ber$erk пишет:

Cells(2, 1) и Cells(h, 2) ссылаются на ячейки другого (отличного от "дд") листа. Поэтому и вылезает ошибка пока напрямую не указать нужный лист (ну или не перейти на него).

Ну как бы мне кажется, что мы тут ведь и пишем явным образом указание на нужный лист -  
Sheets("дд").Range(Cells...
или, аналогично,
With Sheets("дд")...
,однако не работает...
Тогда как в 1-й строке у нас тоже указание на другой лист
h = Sheets("дд").Range("A62000").End(xlUp).Row
,однако работает...

Насчет вставить файл - не знаю, как его сюда вставлять, но если отбросить ненужное, суть его такая:
есть 2 листа, на листе "дд" в первых 2 столбцах какие-то данные, далее пишем:

Sub p40()

  hd = Sheets("дд").Cells(62000, 1).End(xlUp).Row
  dx01 = Sheets("дд").Range(Cells(2, 1), Cells(hd, 2)).Value

End Sub

ну и запускаем, находясь на другом листе... и пишет ошибку...

Resize работает нормально...
VBA - присвоение значений ячеек с другого листа
 
dx01 = Sheets("дд";).Range("A2";).Resize(h - 1, 2).Value

ber$erk, так - да, работает... Спасибо...

Все равно вопрос-то остается в причине ошибки, т.к не особенно понятно, откуда она возникает-то...
Относительно исходного варианта интересно - это у меня excel кривой стоит, или так на самом деле нельзя писать (почему???)...
VBA - присвоение значений ячеек с другого листа
 
Тоже самое, на 2-й строке ошибка выдается...
Excel 2007, если чего...
VBA - присвоение значений ячеек с другого листа
 
Имеется следующий фрагмент:

h = Sheets("дд").Range("A62000").End(xlUp).Row
d = Sheets("дд").Range(Cells(2, 1), Cells(h, 2)).Value

Собственно говоря, необходимо присвоить в переменную значения некоторого диапазона с другого листа. Почему-то на 2 строке выдает ошибку "Run-time error 1004"
Если же мы находимся на этом самом листе или добавляем перед этим
Sheets("дд").select
то все нормально работает.
Может, кто-нибудь знает, в чем причина?..
Страницы: 1
Наверх