Ошибка Out of memory — как исправить
Многие пользователи ПК во время работы с какой-либо программой могут столкнуться с «вылетом» указанной программы, и появившимся сообщением «Out of memory». Возникшая проблема может иметь множество причин, начиная от банального недостатка памяти на пользовательском ПК, и заканчивая некорректной работой с памятью какой-либо программы.
Окно с сообщением об ошибке «Out of memory»
Причины появления дисфункции
Ошибка «Out of memory» (в переводе дословно «вне памяти», или «недостаточно памяти») обычно возникает при недостатке памяти на пользовательском компьютере. В частности же, в появлении данной ошибки «виновен» следующий набор факторов:
- Недостаток памяти RAM на вашем ПК (рабочей памяти, планки которой установлены на материнской плате вашего компьютера). Если на вашем компьютере установлен всего 1 гигабайт памяти, вы будете встречаться с описываемой ошибкой довольно часто. Нормальным же ныне считается наличие на компьютере 4 гигабайт памяти и выше;
- Недостаток места на жёстком диске.
Когда вашему компьютеру не хватает физической R.A.M. памяти, он заимствует часть места на жёстком диске, и создаёт так называемую «виртуальную память». Система временно хранит в такой виртуальной памяти ту часть данных, которая не помещается в памяти обычной. Такие данные обычно хранятся в файле «pagefile.sys», размер которого может увеличиваться или уменьшаться в зависимости от специфики работы вашей ОС. Если на диске будет недостаточно места, файл «pagefile.sys» не сможет расти, и пользователь получит ошибку «out of memory».
- При одновременном запуске на ПК большого количества программ, каждая из которых бронирует часть памяти ПК под свои задачи;
- При запуск большого количества вкладок браузера. Веб-навигаторы уровня «Firefox» или «Google Chrome» способны занимать от 500 мегабайт до 1 гигабайта памяти под свой функционал, при этом число открытых вкладок и соответствующей обслуживающей памяти может быть ограничено системой. Специалисты Майрософт называют такую проблему «the desktop heap limitation» — «ограничение кучи рабочего стола»);
- Некорректная работа с памятью ряда программ (наиболее часто это игровые программы);
- Не оптимальный размер файла подкачки, с которым работает система.
Обычно причиной возникновения проблемы является недостаток ОЗУ на компьютере пользователя
Как исправить ошибку «Out of memory»
Для решения указанной проблемы рекомендую сделать следующее:
- Перезагрузите ваш ПК, и запустите требуемую программу вновь. Возможно, что проблема имеет случайный характер, и более повторяться не будет;
- Перед запуском нужной программы закройте другие ненужные программы (браузер, музыкальный или видео плеер, текстовый или графический редактор, мессенджер и так далее);
- Если проблема возникает во время серфинга в сети, закройте всё множество вкладок вашего браузера (при наличии), оставив лишь одну или две.
Частой причиной проблемы является множество открытых вкладок в браузере пользователя
Альтернативным вариантом решения проблемы «Out of memory» является установка соответствующего фикса от Майкрософт. Или использование расширений или дополнений для браузера уровня «The Great Suspender» для «Google Chrome», хорошо работающего с ненужными вкладками браузера.
- Добавьте оперативной памяти на ваш ПК. Если у вас на компьютере установлено 1-2 гигабайта памяти, будет оптимальным довести её объём до 4 гигабайт (а для 64-битных Виндовс 7, 8 и 10 версии рекомендую 8 и более гигабайт);
Увеличьте количество памяти на вашем ПК
bcdedit/set IncreaseUserVa 3072
И нажмите на ввод, и перезагрузите ваш ПК. Функционал данной команды позволяет выделить пользовательским приложениям 3 гигабайта оперативной памяти для работы. В некоторых системах этого может быть слишком много, потому если после ввода данной команды система начала чаще сбоить, то введите в командной строке от имени администратора:
bcdedit /set IncreaseUserVa 2560 — что позволит задействовать 2,5 гигабайта вместо ранее забронированных 3.
Если ситуацию этим исправить не удалось, верните настройки на состояние по умолчанию:
bcdedit /deletevalue IncreaseUserVa
- Увеличьте объём файла подкачки. Нажмите кнопку «Пуск», в строке поиска введите sysdm.cpl и нажмите ввод. В открывшемся окне настроек системы выберите «Дополнительно» — «Быстродействие» — «Параметры» — «Дополнительно» — «Виртуальная память» — «Изменить». Снимите галочку с опции автоматического размера, поставьте галочку на «Указать размер», и поставьте исходный размер в 8192, и максимальный в 8192. Затем выберите «Задать»;
Установите нужный размер файла подкачки
Заключение
Ошибка «Out of memory» может иметь множество причин, связанных как с физическим недостатком памяти на ПК, так и другими детерминантами, изложенными мной выше. Для решения проблемы советую закрыть ненужные программы (вкладки браузера) на вашем компьютере (тем самым разгрузив его память), а самым эффективным инструментом является установка дополнительной планки памяти на ПК, что в большинстве случаев поможет избавиться от ошибки «Out of memory» на вашем компьютере.
Источник
Недостаточно памяти (ошибка 7) Out of memory (Error 7)
Требуется больше памяти, чем доступно, или достигнута граница сегмента в 64 КБ. More memory was required than is available, or a 64K segment boundary was encountered. Эта ошибка имеет следующие причины и решения: This error has the following causes and solutions:
открыто слишком много приложений, документов или исходных файлов. You have too many applications, documents, or source files open. Закройте все ненужные приложения, документы и исходные файлы; Close any unnecessary applications, documents, or source files that are open.
есть модуль или процедура слишком большого размера. You have a module or procedure that’s too large. Разбейте большие модули или процедуры на меньшие. Break large modules or procedures into smaller ones. Это не сэкономит память, но может предотвратить достижение границы сегмента в 64 КБ; This doesn’t save memory, but it can prevent hitting 64K segment boundaries.
Microsoft Windows запущена в стандартном режиме. You are running Microsoft Windows in standard mode. Перезапустите Microsoft Windows в расширенном режиме; Restart Microsoft Windows in enhanced mode.
Microsoft Windows запущена в расширенном режиме, но не хватает виртуальной памяти. You are running Microsoft Windows in enhanced mode, but have run out of virtual memory. Увеличьте виртуальную память, освободив место на диске, или по меньшей мере убедитесь, что есть доступное место; Increase virtual memory by freeing some disk space, or at least ensure that some space is available.
запущены резидентные программы. You have terminate-and-stay-resident programs running. Удалите резидентные программы; Eliminate terminate-and-stay-resident programs.
загружено много драйверов устройств. You have many device drivers loaded. Удалите ненужные драйверы устройств; Eliminate unnecessary device drivers.
Недостаточно места для общедоступных переменных. You have run out of space for Public variables. Уменьшите количество переменных Public. Reduce the number of Public variables.
Предпринята попытка обновить свойство, доступное только для чтения. You have attempted to update a property that is read-only. Не присваивайте значения свойствам, которые доступны только для чтения. Do not assign values to read-only properties.
Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh). For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).
Поддержка и обратная связь Support and feedback
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Источник
RunTime Error 7 — Out of Memory
Проблема в следующем: все данные с листа помещаю в массив, чтобы их быстрее обработать. На малых объемах все работает хорошо. На больших, близких к граничным, вылезает ошибка «RunTime Error 7 — Out of Memory».
Она вылезает или на ReDim массива, или на присвоении массиву диапазона с листа.
ПАМЯТИ 8 ГБ, Excel 64 РАЗРЯДНЫЙ, ОПЕРАЦИОНКА 64 РАЗРЯДНАЯ,Excel 2016
ошибку даёт Redim на 111 533 строках и 1635 столбцах
Код
ПОМОГИТЕ ПОЖАЛУЙСТА.
ЗАРАНЕЕ СПАСИБО.
Ошибка Microsoft Visual C++ Runtime Library — Runtime Error
Здравствуйте. Буду признательна за помощь в моей беде. Совсем в этом не разбираюсь. В Safari при.
Ошибка времени исполнения: Server Error in ‘/’ Application, Runtime Error
Здравствуйте, через некоторое время после загрузки страницы если нажимаю на кнопку, то выдает.
[DCC Error] E2161 Error: RLINK32: Out of memory!
При компиляции вылаиет такая ошибка (сабж), да у меня много данных храниться в ресурсах, но при это.
Runtime Error 201:Range check error
Возникла ошибка(Runtime Error 201:Range check error) var a : array of longint; s.
Я выходил из такой ситуации следующим образом:
вычислял общее кол-во строк
определял кол-во проходов по массиву так, чтобы за один проход в массив загонялось не более 2000 строк(при условии 30 с лишним столбцов)
и так кусками обрабатывал.
Но у меня была ситуация такова, что мне надо было собрать результирующий массив с условиями, в результате чего результирующий массив был в разы меньше исходных данных. Память выдерживала без проблем и на 64 и на 32 битах.
Возможно дальше по коду у Вас идет присвоение массиву ячеек как объектов (а не значений) от чего и происходит перегруз (если только Вы не используете массив как раз именно с целью доступа к свойствам виртуальных ячеек).
Уверен, что если поискать по остальной части проекта, то можно аналогично оптимизировать.
В любом случае без всего кода тяжело что либо подсказать.
Утечка памяти может происходить где угодно.
Приведенный участок кода всего лишь информирует о том, что памяти больше нет.
Но он далеко не обязательно является основной причиной проблемы.
Источник
axtrace Пользователь Сообщений: 23 |
Добрый день! Проблема в следующем: все данные с листа помещаю в массив, чтобы их быстрее обработать. На малых объемах все работает хорошо. На больших, близких к граничным, вылезает ошибка «RunTime Error 7 — Out of Memory». Она вылезает или на ReDim массива, или на присвоении массиву диапазона с листа. Что странно, так это ошибка не вылезает, если использую константу в 1 500 000 (строк), а если через переменную передаю 1048574 (строк), то вылезает. Это и взрывает мне мозг. Запускаю функцию Sub StartTransferData() в модуле m2_Main2 в файле (48 Мб): https://docs.google.com/file/d/0B_GHN7yiYuxELWVSSmJIM3VUczg/edit?usp=sharing весит много, поэтому через гугл драйв. Подскажите, пожалуйста, в чем может быть дело и как бороться. Спасибо Изменено: axtrace — 01.02.2013 18:08:48 |
LastRow=1’048’574, LastCol=16’384 всего 17’179’836’416 ячеек; даже всего по одному байту на ячейку — нужно не менее 16Г памяти только на массив. Изменено: Михаил С. — 01.02.2013 18:54:26 |
|
EducatedFool Пользователь Сообщений: 3643 |
#3 01.02.2013 18:56:43 Возможно, дело и не в объёме памяти, требуемой для массива,
А в коде написано 150 000 PS: Через Redim можно изменять только верхнюю размерность массива Изменено: EducatedFool — 01.02.2013 19:01:17 |
||
axtrace Пользователь Сообщений: 23 |
#4 01.02.2013 19:00:51
а что такое верхняя размерность массива?
нет, не заработает. я ее специально добавил, чтобы показать, что если указывать размеры как числа, то все ок. |
||||
ikki Пользователь Сообщений: 9709 |
#5 01.02.2013 19:04:27
поправка. фрилансер Excel, VBA — контакты в профиле |
||
Юрий М Модератор Сообщений: 60747 Контакты см. в профиле |
#6 01.02.2013 19:05:55
А Вы попробуйте присвоить LastRow значение = 1048574. И LastColumn = 15. Первую строку с ReDim Отключите. Что получится? |
||
ikki Пользователь Сообщений: 9709 |
#7 01.02.2013 19:14:52 имхо, 48мб качать никто не будет. кстати, размеры массива вообще нет нужды определять явно.
фрилансер Excel, VBA — контакты в профиле |
||
axtrace Пользователь Сообщений: 23 |
#8 01.02.2013 19:17:50
Получилось, что при первом вызове функции getArrayFromSheet — той, в которой этот ReDim содержиться — проходит все успешно, но во втором вызове — я несколько массивов формирую с разных листов — опять вылетает та же ошибка. Хотя там точно также присваивается LastRow значение = 1048574. И LastColumn = 15 |
||
Михаил С. Пользователь Сообщений: 10514 |
#9 01.02.2013 19:20:09
Известно — число столбцов на листе Прикрепленные файлы
|
||
ikki Пользователь Сообщений: 9709 |
#10 01.02.2013 19:21:51
нет. фрилансер Excel, VBA — контакты в профиле |
||
Юрий М Модератор Сообщений: 60747 Контакты см. в профиле |
Утечка памяти? Попробуйте убить массив. |
Юрий М Модератор Сообщений: 60747 Контакты см. в профиле |
#12 01.02.2013 19:24:24
Михаил, не совсем так: это последняя ячейка (номер столбца) по второй строке. |
||
axtrace Пользователь Сообщений: 23 |
#13 01.02.2013 19:24:53
может быть. а как убивают массивы? nArray = tSheet.Range(tSheet.Cells(1, 1), tSheet.Cells(LastRow, LastCol)) |
||
Юрий М Модератор Сообщений: 60747 Контакты см. в профиле |
Вы сначала объясните — зачем дважды ReDim с одним и тем же nArray? |
The_Prist Пользователь Сообщений: 14257 Профессиональная разработка приложений для MS Office |
#15 01.02.2013 19:37:27 Попробуйте объявлять процедуру так:
и раскомментируйте строки с объявлением массива и назначением его через функцию. Или массив объявите глобально. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
ikki Пользователь Сообщений: 9709 |
#16 01.02.2013 19:38:03 вообще-то странно
вполне штатно — в диспетчере задач при пошаговом режиме выделение памяти увеличивается по 150+ метров… по завершении процедуры — всё самоубивается (массив локальный). фрилансер Excel, VBA — контакты в профиле |
||
Юрий М Модератор Сообщений: 60747 Контакты см. в профиле |
#17 01.02.2013 19:39:48 Саш, да вообще нужно, как ты советовал:
|
||
axtrace Пользователь Сообщений: 23 |
#18 01.02.2013 19:42:40
Первый — для примера. На нем не вылезает ошибка. |
||||
Юрий М Модератор Сообщений: 60747 Контакты см. в профиле |
#19 01.02.2013 19:44:42
Так и объявляйте сразу динамический массив (см. мой пост выше) — и ReDim’мить не придётся. |
||
Юрий М Модератор Сообщений: 60747 Контакты см. в профиле |
#20 01.02.2013 19:45:30
Неправда — совсем разные размеры. |
||
axtrace Пользователь Сообщений: 23 |
#21 01.02.2013 19:47:50
то есть просто убрать ReDim? Я так сделал, у меня в массив записалось <Out of memory>, программа благополучно продолжила работать, но вылезла ошибка о несуществовании объекта в дальнейшем, при попытке перенести данные из этого массива в другой |
||
axtrace Пользователь Сообщений: 23 |
#22 01.02.2013 19:50:52
я опечатался, вместо 1 500 000 указал 150 000. В файле уже исправил, все равно этот ReDim берет, на втором — ошибка |
||
Юрий М Модератор Сообщений: 60747 Контакты см. в профиле |
#23 01.02.2013 19:58:48
Объявите массив, как указано, и присвойте ему значения из диапазона листа — никакой ошибки быть не должно. Не «просто убрать RedIm», а записать: массив = … |
||
axtrace Пользователь Сообщений: 23 |
#24 01.02.2013 19:59:17
может быть это ограничение разметки памяти в vba? |
||
The_Prist Пользователь Сообщений: 14257 Профессиональная разработка приложений для MS Office |
Я полагаю проблема в том, что массив передается в процедуру ссылкой. А в этом случае память не высвобождается — VBA считает, что мы вроде как далее будем использовать переменную. И при повторном обращении с передачей ссылки у нас выделенный размер памяти может «слегка» увеличиватся. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Михаил С. Пользователь Сообщений: 10514 |
#26 01.02.2013 21:52:01 А мне кажется, дело в простой нехватке физической памяти. Например, такой массив
на моем компе (win7, off 2010, 2 G) срабатывает, а такой
— «RunTime Error 7 — Out of Memory» |
||||
axtrace Пользователь Сообщений: 23 |
#27 01.02.2013 22:00:03
там же только адрес, откуда вызывается и адреса памяти массивов (по ссылке передаются параметры функции). это вроде бы немного. |
||
axtrace Пользователь Сообщений: 23 |
#28 01.02.2013 22:01:35
странно. у меня win7, off2010, 4Gb |
||
axtrace Пользователь Сообщений: 23 |
попробую я, в общем, делать кусками. Брать массив тысяч в 100 строк, преобразовывать его, записывать на новый лист, переходить к следующим 100 тыс. строк… Время, конечно, увеличится. Но хоть какое-то решение у меня будет. все большое спасибо за идеи! Надеюсь, вам пригодится где-нибудь когда-нибудь |
SvetaS_love Пользователь Сообщений: 132 |
#30 14.07.2015 20:39:10 Добрый День!
Как решили прошлую проблему? одинокий странник |
||
RunTime Error 7 — Out of Memory на ReDim массива VBA Excel 64
Добрый день!
Проблема в следующем: все данные с листа помещаю в массив, чтобы их быстрее обработать. На малых объемах все работает хорошо. На больших, близких к граничным, вылезает ошибка «RunTime Error 7 — Out of Memory».
Она вылезает или на ReDim массива, или на присвоении массиву диапазона с листа.
ПАМЯТИ 8 ГБ, Excel 64 РАЗРЯДНЫЙ, ОПЕРАЦИОНКА 64 РАЗРЯДНАЯ,Excel 2016
ошибку даёт Redim на 111 533 строках и 1635 столбцах
на объёме маленьком ошибку не даёт (до 100 строк и до 100 столбцов) — работает нормально……
Если ошибку отлавливать
On Error Resume Next If Err.Number <> 0 Then Err.Clear End If
— то Excel виснит и уходит в бесконечный цикл, постоянно увеличивая занимаемую память.
код
Dim text_word2() As Variant
x=1635
ReDim text_word2(0 To kki, 0 To x)- место ошибки
полный код:
Private Sub CommandButton3_Click() Dim n As Long Dim nn As Long Dim find As String Dim kki, kkj As Integer Dim k, kk, ii, i, j, jj, l, ll, jjj, i1, i2, kkk, j1, j2, j3, i3, jj3, eqmax As Long Dim ii_find, jj_find, ii_text, jj_text As Long Dim Txt, txt2, txt_p, txt_col, txt_row, txt_out As String Dim Rng_find As Range Dim Rng_text As Range Dim Rng_substitution As Range Dim Rng_out As Range Dim theRange_out As Range Dim Delimiter As String Dim Find_word() As String Dim Find_word2() As String Dim text_word1() As String Dim text_word2() As Variant On Error Resume Next Set Rng_find = Range(RefEdit1.Value) Set Rng_text = Range(RefEdit2.Value) Set Rng_substitution = Range(RefEdit3.Value) Set Rng_out = Range(RefEdit4.Value) Delimiter = Me.TextBox1 On Error GoTo 0 If Rng_find Is Nothing Then MsgBox "вы не выбрали диапазон какие данные ищем" Err.Clear Else If Rng_text Is Nothing Then MsgBox "вы не выбрали диапазон в котором ищем данные " Err.Clear Else If Rng_out Is Nothing Then MsgBox "вы не выбрали диапазон куда выводить данные" Err.Clear Else Application.ScreenUpdating = False If myWord(Rng_text).imyRows > myWord(Rng_text).imyColumns Then 'если строк больше чем столбцов в тексте в котором ищем 'раскладываем по словам искомый диапазон ii_find = myWord(Rng_find).imyRows jj_find = myWord(Rng_find).imyColumns ReDim Find_word(1 To ii_find, 0 To jj_find) ' 0-вой столбец фраза целиком Find_word = myWord(Rng_find).iFindword ' переводим в массив 2-ух строк ' 0 строка фраза целиком ' 1 строка разложение по словам ReDim Find_word2(0 To 2, 0 To (jj_find * ii_find)) ' jjj = 1 For i = 1 To ii_find For j = 1 To jj_find If ((Find_word(i, j) <> "") And (Find_word(i, j) <> " ") And (Find_word(i, j) <> Empty) And (Len(Find_word(i, j)) > 2)) Then Find_word2(0, jjj) = Find_word(i, 0) Find_word2(1, jjj) = Find_word(i, j) jjj = jjj + 1 End If Next j Next i 'раскладываем по словам диапазон в котором ищем ii_text = myWord(Rng_text).imyRows jj_text = myWord(Rng_text).imyColumns ReDim text_word1(1 To ii_text, 0 To jj_text) ' 0-вой столбец фраза целиком text_word1 = myWord(Rng_text).iFindword '______________ 'определение % совпадения каждого слова в строке в масиве text_word2(i, j) kkj = jj_text + jjj + 2 kki = ii_text + 2 ReDim text_word2(0 To kki, 0 To kkj) On Error Resume Next If Err.Number <> 0 Then Err.Clear End If '-составляем массив в котором будем сопоставлять For j = 0 To jj_text i2 = 3 For i = 1 To (ii_text) 'заполнение массива text_word2(0, j) = "где ищем" text_word2(i2, j) = text_word1(i, j) i2 = i2 + 1 Next i Next j ' первая строка - группы- искомые слова исходном виде- строка 0 ' вторая строка - группы- искомые слова в разложенном виде - строка 1 For i = 1 To 2 'заполнение массива kkk = jj_text + 1 For jj = 1 To jjj text_word2(0, kkk) = "что ищем" text_word2(i, kkk) = Find_word2((i - 1), jj) kkk = kkk + 1 Next jj Next i For i = 3 To i2 - 1 'получаем % совпадения искомых слов For jj = (jj_text + 1) To kkk eqmax = 0 For jj3 = 1 To jj_text If text_word2(i, jj3) <> Empty Then If Equality(CStr(text_word2(i, jj3)), CStr(text_word2(2, jj))) > eqmax Then text_word2(i, jj) = CDbl(CDbl(Equality(CStr(text_word2(i, jj3)), CStr(text_word2(2, jj))) / Len(CStr(text_word2(2, jj))))) eqmax = Equality(CStr(text_word2(i, jj3)), (CStr(text_word2(2, jj)))) End If If eqmax < 3 Then text_word2(i, jj) = "" End If Next jj3 Next jj Next i ElseIf myWord(Rng_text).imyRows < myWord(Rng_text).imyColumns Then 'если столбцов больше чем строк в тексте в котором ищем Else End If 'динамический расчёт вставляемого массива от заданной ячейки полбзователем txt_p = Substring(RefEdit4.Text, "!", 1) txt_col = Substring(Substring(RefEdit4.Text, "!", 2), "$", 2) txt2 = Substring(Substring(RefEdit4.Text, "!", 2), "$", 3) txt_row = Substring(txt2, ":", 1) i = jj_text + jjj + 2 + Int(Columns(txt_col).Column) txt_out = txt_col & txt_row & ":" & Trim(Substring(Cells(1, i).Address, "$", 2)) & Trim(Str((ii_text + 2) + Int(txt_row))) 'вставка итогового массива ActiveWorkbook.ActiveSheet.Range(txt_out).Clear Set theRange_out = ActiveWorkbook.ActiveSheet.Range(txt_out) theRange_out = text_word2 End If End If End If
ВОПРОС БЫЛ КАК ОБОЙТИ Redim ? ИЛИ КАК ОТЛОВИТЬ ОШИБКУ «RunTime Error 7 — Out of Memory «…
ТУТ ГЛЮК САМОГО VBA EXCEL В Redim на больших объёмах….
ПОМОГИТЕ ПОЖАЛУЙСТА.
ЗАРАНЕЕ СПАСИБО.
this might be on here somewhere and I missed it, just let me know.
After running my macro, I get Run-time Error 7 Out of Memory. After debugging, it’s on this line:
cell.Offset(0, 6).Value = Sheets("MakeRing_Maths").Range("N1").Value
The code is meant to run down a list of airports with longitudes and latitudes, create line segments that will be interpreted as circles, and convert to .KML (which is read by Google Earth Pro).
Here is the rest of the code — how can I clean something like this up to avoid memory leaks??
All answers appreciated, or pointers to other posts. I know this is a lot, so general suggestions are also welcome! Thank you!
Sub PLANEMAN_Coords()
Dim Latitude As Double
Dim Longitude As Double
Dim Bearing As Integer
Dim LeftRight As Integer
Dim RangeKM As Double
Dim MinRange As Double
For Each cell In [RangeRings_ENTER!B9:B5001]
If cell.Value = "" Then
GoTo EXITLOOP
Else
End If
Latitude = cell.Offset(0, 1)
Longitude = cell.Value
'set default values:
'line width
If cell.Offset(0, 2).Text = "" Then
cell.Offset(0, 2).Value = 2
'default line width = 2
Else
End If
'radius
If cell.Offset(0, 5).Text = "" Then
cell.Offset(0, 5).Value = 8.04672
'default radius = 8.04672 km = 5 miles
Else
End If
RangeKM = cell.Offset(0, 5)
'line color
If cell.Offset(0, 3).Text = "" Then
cell.Offset(0, 3).Value = "ff0000ff"
'default line color is Red
Else
End If
'common code
Sheets("MakeRing_Maths").Range("D3").Value = Longitude
Sheets("MakeRing_Maths").Range("E3").Value = Latitude
Sheets("MakeRing_Maths").Range("D1").Value = RangeKM
'code that differs depending on range-ring type
If cell.Offset(0, 7).Text = "Circle" Then
Sheets("MakeRing_Maths").Range("J1").Value = 0 'Bearing
Sheets("MakeRing_Maths").Range("J2").Value = 180 'width - ie 2 x 180 = 360 = complete circle
Calculate
cell.Offset(0, 6).Select 'just so that the user can 'see' that the macro is still running and not crashed
cell.Offset(0, 6).Value = Sheets("MakeRing_Maths").Range("N1").Value
Else
'else wedge of some sort
Bearing = cell.Offset(0, 8)
LeftRight = cell.Offset(0, 9)
MinRange = cell.Offset(0, 10)
Sheets("MakeRing_Maths").Range("J1").Value = Bearing
Sheets("MakeRing_Maths").Range("J2").Value = LeftRight
If cell.Offset(0, 7).Text = "Wedge" Then
Calculate
cell.Offset(0, 6).Select 'just so that the user can 'see' that the macro is still running and not crashed
cell.Offset(0, 6).Value = Sheets("MakeRing_Maths").Range("N2").Value
Else 'else a wedge with minimum range component 'Wedge2
If cell.Offset(0, 7).Text = "Wedge2" Then
Sheets("MakeRing_Maths").Range("F1").Value = MinRange
Calculate
cell.Offset(0, 6).Select 'just so that the user can 'see' that the macro is still running and not crashed
cell.Offset(0, 6).Value = Sheets("MakeRing_Maths").Range("N3").Value
Else
If cell.Offset(0, 7).Text = "Arrow" Then
Sheets("MakeRing_Maths").Range("F1").Value = RangeKM * 0.95
Calculate
cell.Offset(0, 6).Select 'just so that the user can 'see' that the macro is still running and not crashed
cell.Offset(0, 6).Value = Sheets("MakeRing_Maths").Range("N4").Value
Else
'HERE
End If
End If
End If
End If
Next
EXITLOOP:
Call PLANEMAN_RangeRings_KML 'make KML file
End Sub
Sub PLANEMAN_RangeRings_KML()
' Original inspiration code by simon_a
' Planeman 2009
'get user to specify save location and name
Dim ThisAddress As String
ChDir ThisWorkbook.Path
ThisAddress = Application.GetSaveAsFilename(FileFilter:="KML Files (*.kml),*.kml", Title:="Save Location & Name")
' file details
filePath = ThisAddress
docName = "PLANEMAN.KML"
FolderName = "Folder"
Open filePath For Output As #1
'Write header to file
outputText = "<?xml version=""1.0"" encoding=""UTF-8""?> <kml xmlns=""http://www.opengis.net/kml/2.2"" xmlns:gx=""http://www.google.com/kml/ext/2.2"" xmlns:kml=""http://www.opengis.net/kml/2.2"" xmlns:atom=""http://www.w3.org/2005/Atom""> <Document><name>" & docName & "</name> <Folder> <name>" & FolderName & "</name> <open>1</open>"
Print #1, outputText
'loop
For Each cell In [RangeRings_ENTER!B9:B5001]
If cell.Value = "" Then
Exit For
End If
StrPart1 = "<Style id=""sn_ylw-pushpin""><IconStyle><color>" & cell.Offset(0, 3) & "</color></IconStyle><LineStyle><width>" & cell.Offset(0, 2) & "</width><color>" & cell.Offset(0, 3) & "</color></LineStyle><PolyStyle><color>" & cell.Offset(0, 3) & "</color></PolyStyle></Style>"
StrPart2 = "<Placemark><name>" & cell.Offset(0, -1) & "</name> <styleUrl>#sn_ylw-pushpin</styleUrl> <LineString> "
StrPart3 = "<coordinates>" & cell.Offset(0, 6) & ",0 </coordinates> </LineString></Placemark>"
'Create a placemark
outputText = StrPart1 & StrPart2 & StrPart3
Print #1, outputText
Next
'Write footer to file
outputText = "</Folder></Document></kml>"
Print #1, outputText
Close #1
MsgBox "Macro Complete"
'
End Sub
Sub PLANEMAN_Placemarks_KML()
' Original inspiration code by simon_a
' Planeman 2009
'get user to specify save location and name
Dim ThisAddress As String
ChDir ThisWorkbook.Path
ThisAddress = Application.GetSaveAsFilename(FileFilter:="KML Files (*.kml),*.kml", Title:="Save Location & Name")
' file details
filePath = ThisAddress
docName = "PLANEMAN.KML"
FolderName = "PlacemarkFolder"
Open filePath For Output As #1
'Write header to file
outputText = "<?xml version=""1.0"" encoding=""UTF-8""?><kml xmlns=""http://www.opengis.net/kml/2.2""> <Document><name>" & docName & "</name> <Folder> <name>" & FolderName & "</name> <open>1</open>"
Print #1, outputText
'loop
For Each cell In [Placemarks_ENTER!B9:B5001]
If cell.Value = "" Then
Exit For
End If
StrPart1 = ""
StrPart2 = " <Placemark> <name> " & cell.Offset(0, -1) & " </name> "
StrPart3 = cell.Offset(0, 6) & "<Point><coordinates> " & cell.Offset(0, 0) & "," & cell.Offset(0, 1) & ",0</coordinates> </Point> </Placemark>"
'Create a placemark
outputText = StrPart1 & StrPart2 & StrPart3
Print #1, outputText
Next
'Write footer to file
outputText = "</Folder></Document></kml>"
Print #1, outputText
Close #1
MsgBox "Macro Complete"
'
End Sub
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
- zafon
- Новичок
- Сообщения: 29
- Зарегистрирован: 04.07.2003 (Пт) 4:48
- Откуда: AKKO,Israel
Run-time error ‘7’ : Out of memory
Подскажите что делать с этой проблемой:
Уже не первая моя программа выдаёт при запуске
«Run-time error ‘7’ : Out of memory»
Т.е. у моего друга (по его словам) одна из моих программ при загрузке давала эту ошибку.Но это было уже давно (4-5месяцев назад)!
У него стоял МИЛЕНИУМ и я погрешил на систему и не придал этому значения , да и у других людей которые пользовались моей програмой небыло ни каких проблем. На этом я успокоился…
Но вот полторы недели назад я закончил очень важный для меня проэкт. Он находился (перед публикацией) на двухнедельном тэстировании. Ни у кого из тэстеров небыло никаких проблем , и тут вчера (04.04.04) я запускаю программу (как обычно) и… получаю —
«Run-time error ‘7’ : Out of memory»
Ладно, думаю, сейчас запущу ‘VB’ и проверю в чем проблема.
Запускается ‘VB’ и «говорит» мне:
-MsgBox Caption «VBDataViewWindow»
и ниже:
«Out of memory. Continue? »
Y/N
Т.е. по логике в моём коде нет проблем , проблема с ‘VB’ в системе.
У других ребят программа работает без проблем.
Комп. : P4-(Intel1.8-Asus266), RAM-256 HD8Mb-120G Win.XP
т.е. проблем со скоростью и памятью не должно быть …
Комп перегружал всё равно ошибка ……….
Установлен пакет «Microsoft Visual Studio 6.0».
Может что-то произошло с «msvbvm60.dll» Я идиот! Убейте меня, кто-нибудь!………
Помогите , очень Вас прошу!!!
Пишите сюда или
zafon@nm.ru
Зарание блогодарен за любые высказывания .
С ув. «ViC» !!!
- Kostyan
- Постоялец
- Сообщения: 439
- Зарегистрирован: 20.09.2002 (Пт) 4:14
- Откуда: Россия, Уссурийск
-
- ICQ
Kostyan » 06.04.2004 (Вт) 0:15
Я при подобных подозрениях на VB удалил бы его подчистую и установил заново.
Нет ничего невозможного для человека с интеллектом.
- Cyrax
- Cyberninja
-
- Сообщения: 891
- Зарегистрирован: 25.04.2002 (Чт) 21:20
- Откуда: Magnitogorsk, Russia
-
- Сайт
- ICQ
Cyrax » 06.04.2004 (Вт) 9:53
а я бы, для начала, на код взглянул…
да и все остальные, наверное, тоже не отказались бы от этого
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно… (озадаченно) А это в какую сторону тянуть? Ну-ка… Ага, этот был лишний, этот вообще не отсюда, и этот… Точно, два болта.
Welcome to IRC
- zafon
- Новичок
- Сообщения: 29
- Зарегистрирован: 04.07.2003 (Пт) 4:48
- Откуда: AKKO,Israel
zafon » 06.04.2004 (Вт) 11:13
Да,конечно удалить ‘VB’ , а затем переустановить не проблема.
Это логично.
Но ведь нужно знать причину — почему это случилось.
Клиент не может удалить ‘VB’ с ситемы а затем переустановить.
(Что подразумеватся удалить ‘VB’ с ситемы клиента — это разрегистрация всех библиотек и контролов , а затем их удаление.)
Повторная переустановка моей программы не помогает…
(Т.е. Uninstall -> Install )
Есть проблема с ‘VB’ в системе.
Просто хочется перестраховаться и включить в инсталяцию нужные файлы или специальную опперацию , которая устранила бы эту проблему у пользователя , при повторной переустановки моей программы .
Замена и перерегистрация в системе msvbvm60.dll не устраняет проблему…
Тэстеры говорят что программа работает без сбоев — КОД «чистый» .
Только у меня есть эта проблема…
- hCORe
- VB — Экстремал
-
- Сообщения: 2332
- Зарегистрирован: 22.02.2003 (Сб) 15:21
- Откуда: parent directory
-
- Сайт
- ICQ
hCORe » 06.04.2004 (Вт) 11:20
http://amelso.narod.ru/gluk.htm писал(а):Run-time error ‘6’: Out of memory
Причина ошибки: программе не хватает виртуальной памяти для инициализации или при выполнении каких-либо операций.
Устранение ошибки: Увеличить размер файла подкачки на жестком диске. См. Пуск—Панель управления—Производительность и обслуживание—Система—Дополнительно—Параметры быстродействия в Windows 2000 и XP и Пуск—Настройка—Панель управления—Система—Дополнительно—Виртуальная память для Windows 9x/ME. После этого перезагрузить компьютер для снятия проблемы.
Моду создают модоки, а распространяют модозвоны.
- zafon
- Новичок
- Сообщения: 29
- Зарегистрирован: 04.07.2003 (Пт) 4:48
- Откуда: AKKO,Israel
zafon » 06.04.2004 (Вт) 12:23
- hCORe
- VB — Экстремал
-
- Сообщения: 2332
- Зарегистрирован: 22.02.2003 (Сб) 15:21
- Откуда: parent directory
-
- Сайт
- ICQ
hCORe » 06.04.2004 (Вт) 12:25
Переустанови VB, не поможет — снеси ко всем чертям систему и поставь заново
Моду создают модоки, а распространяют модозвоны.
- Cyrax
- Cyberninja
-
- Сообщения: 891
- Зарегистрирован: 25.04.2002 (Чт) 21:20
- Откуда: Magnitogorsk, Russia
-
- Сайт
- ICQ
Cyrax » 06.04.2004 (Вт) 12:40
hCORe писал(а):снеси ко всем чертям систему и поставь заново
боюсь, и это не поможет…
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно… (озадаченно) А это в какую сторону тянуть? Ну-ка… Ага, этот был лишний, этот вообще не отсюда, и этот… Точно, два болта.
Welcome to IRC
- zafon
- Новичок
- Сообщения: 29
- Зарегистрирован: 04.07.2003 (Пт) 4:48
- Откуда: AKKO,Israel
zafon » 06.04.2004 (Вт) 13:47
Это выглядит так.
_____________________________________________________________
Опять же говорю: снести , переустановить,поломать ,скрушить и т.д. (незная в что привело к ошибке) — это не проблема.
Да и программа (без изминений кода) проработала полторы недели без ошибок.
Просто хочется сделать так что бы пользователь , у которого возникла такая проблема , мог с помощью повторной переустановки моей программы — ИСПРАВИТЬ ЭТУ ОШИБКУ , а не удалять систему и заново её переустанавливать , только для того чтобы пользоваться
программой .
Да и делая выводы из «скриншотов» , я думаю что это может возникнуть у любого из нас кто пишет на VB .
- Cyrax
- Cyberninja
-
- Сообщения: 891
- Зарегистрирован: 25.04.2002 (Чт) 21:20
- Откуда: Magnitogorsk, Russia
-
- Сайт
- ICQ
Cyrax » 06.04.2004 (Вт) 13:52
а что такое «VBDataViewWindow»?
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно… (озадаченно) А это в какую сторону тянуть? Ну-ка… Ага, этот был лишний, этот вообще не отсюда, и этот… Точно, два болта.
Welcome to IRC
- alibek
- Большой Человек
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 06.04.2004 (Вт) 13:54
Имеется ли в проекте Coolbar (из Microsoft Common Controls-3)? Просто он себя в некоторых случаях нехорошо ведет и рушит IDE.
Да, и еще. После того, как VB загрузиться, зайди в Add-Ins-=менеджер и поотключай все плугины.
Lasciate ogni speranza, voi ch’entrate.
- hCORe
- VB — Экстремал
-
- Сообщения: 2332
- Зарегистрирован: 22.02.2003 (Сб) 15:21
- Откуда: parent directory
-
- Сайт
- ICQ
hCORe » 06.04.2004 (Вт) 14:14
VBDataViewWindow — это малополезное окошко просмотра соединений с БД. Оно иногда глючит по-страшному В поставке с VB есть DLL dataview.dll, попробуй ее переименовать и все встанет на свои места
Моду создают модоки, а распространяют модозвоны.
- Ennor
- Конструктивный критик
- Сообщения: 2504
- Зарегистрирован: 18.12.2001 (Вт) 3:58
- Откуда: Калуга -> Москва
-
- ICQ
Ennor » 06.04.2004 (Вт) 14:16
Насчет кулбара — это верно, но он все-таки не так зверствует, только если его пытаются внутри собственного контрола использовать (сам попадался…). А вообще очень похоже на запуск среды под аккаунтом с _очень_ ограниченными правами (типа Guest). Либо, если это не так, начинай тщательно тестить все железо. Да, надеюсь, пятый сервис-пак на студию у тебя стоит…
А почему слетело? Да миллион причин. Реестр накрылся, NTOSKRNL.EXE перекочевряжило, да что угодно.
- zafon
- Новичок
- Сообщения: 29
- Зарегистрирован: 04.07.2003 (Пт) 4:48
- Откуда: AKKO,Israel
zafon » 06.04.2004 (Вт) 14:23
alibek писал(а):Имеется ли в проекте Coolbar (из Microsoft Common Controls-3)? Просто он себя в некоторых случаях нехорошо ведет и рушит IDE.
Да, и еще. После того, как VB загрузиться, зайди в Add-Ins-=менеджер и поотключай все плугины.
Add-Ins — всё отключено .
На счёт «Microsoft Common Controls-3» моё приложение использует:
— MSCOMCT2.OCX
— MSCOMCTL.OCX
— shdocvw.dll
— comdlg32.ocx
Да и если VB «ругается» то моя программа не причём… Что-то с библиотеками VB или реестр…
___________________________________________________________
Cyrax-
VBDataViewWindow — без понятия , но его *.dll файлы находятся в папке VB .
___________________________________________________________
Странно это всё ???…
- hCORe
- VB — Экстремал
-
- Сообщения: 2332
- Зарегистрирован: 22.02.2003 (Сб) 15:21
- Откуда: parent directory
-
- Сайт
- ICQ
hCORe » 06.04.2004 (Вт) 14:25
Ennor писал(а):NTOSKRNL.EXE перекочевряжило
Да нет, скорее NTLDR кто-то переименовал или удалил
Моду создают модоки, а распространяют модозвоны.
- zafon
- Новичок
- Сообщения: 29
- Зарегистрирован: 04.07.2003 (Пт) 4:48
- Откуда: AKKO,Israel
zafon » 06.04.2004 (Вт) 17:06
- Amed
- Алфизик
- Сообщения: 5346
- Зарегистрирован: 09.03.2003 (Вс) 9:26
-
- ICQ
Amed » 06.04.2004 (Вт) 20:28
Точно. Как-то делал программу на конкурс (конференцию), и за 2 дня до сдачи она у меня начала выдавать «Out of memory». Перепугался я страшно, но, кажется, дело было в собственных контролах, случайно изменив которые, я восстановил работоспособность… А то точно была бы «Catastrophic failure»
- codemaster
- Постоялец
-
- Сообщения: 604
- Зарегистрирован: 13.02.2004 (Пт) 13:35
codemaster » 07.04.2004 (Ср) 14:36
zafon писал(а):
alibek писал(а):Да и если VB «ругается» то моя программа не причём… Что-то с библиотеками VB или реестр…
Странно это всё ???…
Есть ли в твоей проге UserControls ?
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1