powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблема 64. Хочется её увидеть изнутри.
6 сообщений из 6, страница 1 из 1
Проблема 64. Хочется её увидеть изнутри.
    #37721743
Valll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не программист. Каждая строка кода даётся муками-нервами... Столкнулся с такой проблемой - EXCEL VBA, после частого использования при отладке моего макроса, вдруг выдаёт сообщение, что не хватает памяти. Стал читать - выяснил, что VBA может использовать только 64 кБ. кода. Видимо, при очередном запуске у меня не сбрасывается занятая память от предыдущего сеанса и происходит переполнение.

Если это не сложно, может кто сделает макрос, который бы говорил остаток свободной памяти, во время загрузки макроса и после очередного запуска макроса? Это позволило бы анализировать код и искать возможность его оптимизировать (обнулять память переменных).

На нет и суда нет. Всё равно - спасибо!
...
Рейтинг: 0 / 0
Проблема 64. Хочется её увидеть изнутри.
    #37721883
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы немного неправильно поняли насчёт 64кБ но не суть...

Скорее, у вас идет распределение памяти из кучи на объекты, которая не освобождаются после использования. Например, используете в процедурах
Код: vbnet
1.
Set oSheet = Sheets(1)

а надо, например,
Код: vbnet
1.
2.
3.
4.
Dim oSheet as Object
Set oSheet = ...
...
Set oSheet = Nothing
...
Рейтинг: 0 / 0
Проблема 64. Хочется её увидеть изнутри.
    #37721908
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
где
Код: vbnet
1.
2.
 'установка объекта в значение Nothing требуется для освобождения памяти, которая была выделена для создания этого объекта
    Set ...... = Nothing
...
Рейтинг: 0 / 0
Проблема 64. Хочется её увидеть изнутри.
    #37721930
Valll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы.

Я объявляю переменную так:

Dim Nomer_stroki as Long

А потом вот так присваиваю ей значение из таблицы:

Nomer_stroki = Worksheets("Чип").Range("G1").Value

Про Nothing я прочитал. Стал её использовать для выгрузки формы в такой комбинации:

Unload FORMA
Set FORMA = Nothing

Я правильно делаю? Или Nothing надо применять к КАЖДОЙ объявленной переменной?
...
Рейтинг: 0 / 0
Проблема 64. Хочется её увидеть изнутри.
    #37721942
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valll,
нет Set FORMA = Nothing
только после того когда создавали объект Set FORMA .....
...
Рейтинг: 0 / 0
Проблема 64. Хочется её увидеть изнутри.
    #37721954
Valll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитал в книге "Программирование на VBA 2003", что метод (или как его...) Unload полностью не освобождает память при выгрузке формы, а только Nothing. Я правильно понял, что если я ПРОГРАММНО не создаю форму, то и метод этот мне не поможет? Я формы создаю с помощью конструктора форм и из процедуры просто обращаюсь: FORMA.show или FORMA.text.value

И на счёт объявления переменных и ссылок на ячейку я правильно делаю?

Вот, кстати накопал ресур, может будет интересно: http://translate.google.ru/translate?hl=ru&sl=en&tl=ru&u=http%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fee814737.aspx&anno=2

Там приводятся несколько макросов по контролю быстродействия программ. Я освоил только один - скорость выполнения. С аглицким тяжело. Если будет желание - отпишитесь по их применению.

Спасибо за дискуссию.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблема 64. Хочется её увидеть изнутри.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]