Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Очистка словаря scripting.dictionary - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Очистка словаря scripting.dictionary
andr89 Дата: Понедельник, 28.09.2015, 11:38 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день

Есть макрос с использованием словаря (когда-то помогли здесь его освоить).
Подскажите пожалуйста, каким образом можно полностью очистить словарь?
Не могу разобраться как использовать RemoveAll применительно к такому макросу:

[vba]
Код
With Worksheets("Доп. данные")
aa = .Cells(.Rows.Count, 13).End(xlUp).Row
bb = .Range("M1", "N" & aa)
End With
With Worksheets("Eina_Eine_Marc")
cc = .Cells(.Rows.Count, 8).End(xlUp).Row
dd = .Range("H1", "H" & cc)
ee = .Range("T1", "T" & cc)
End With

With CreateObject("scripting.dictionary"): .comparemode = 1
For i = 1 To aa
.Item(bb(i, 1)) = bb(i, 2)
Next
For i = 4 To cc
t = Left(dd(i, 1), 2)
If .exists(t) Then ee(i, 1) = .Item(t)
Next

End With

Sheets("Eina_Eine_Marc").Range("T1", "T" & cc) = ee
[/vba]

Спасибо.
[moder]Оформите код тегами (кнопка #)[/moder]


Сообщение отредактировал andr89 - Понедельник, 28.09.2015, 11:57
 
Ответить
СообщениеДобрый день

Есть макрос с использованием словаря (когда-то помогли здесь его освоить).
Подскажите пожалуйста, каким образом можно полностью очистить словарь?
Не могу разобраться как использовать RemoveAll применительно к такому макросу:

[vba]
Код
With Worksheets("Доп. данные")
aa = .Cells(.Rows.Count, 13).End(xlUp).Row
bb = .Range("M1", "N" & aa)
End With
With Worksheets("Eina_Eine_Marc")
cc = .Cells(.Rows.Count, 8).End(xlUp).Row
dd = .Range("H1", "H" & cc)
ee = .Range("T1", "T" & cc)
End With

With CreateObject("scripting.dictionary"): .comparemode = 1
For i = 1 To aa
.Item(bb(i, 1)) = bb(i, 2)
Next
For i = 4 To cc
t = Left(dd(i, 1), 2)
If .exists(t) Then ee(i, 1) = .Item(t)
Next

End With

Sheets("Eina_Eine_Marc").Range("T1", "T" & cc) = ee
[/vba]

Спасибо.
[moder]Оформите код тегами (кнопка #)[/moder]

Автор - andr89
Дата добавления - 28.09.2015 в 11:38
KSV Дата: Понедельник, 28.09.2015, 12:01 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Добрый день!
А где вы собираетесь использовать .RemoveAll, если у вас объект scripting.dictionary сразу удаляется? [vba]
Код
With CreateObject("scripting.dictionary"): .comparemode = 1
     For i = 1 To aa
         .Item(bb(i, 1)) = bb(i, 2)
     Next
     For i = 4 To cc
         t = Left(dd(i, 1), 2)
         If .exists(t) Then ee(i, 1) = .Item(t)
     Next
End With ' после этой строки объект scripting.dictionary удаляется из памяти
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеДобрый день!
А где вы собираетесь использовать .RemoveAll, если у вас объект scripting.dictionary сразу удаляется? [vba]
Код
With CreateObject("scripting.dictionary"): .comparemode = 1
     For i = 1 To aa
         .Item(bb(i, 1)) = bb(i, 2)
     Next
     For i = 4 To cc
         t = Left(dd(i, 1), 2)
         If .exists(t) Then ee(i, 1) = .Item(t)
     Next
End With ' после этой строки объект scripting.dictionary удаляется из памяти
[/vba]

Автор - KSV
Дата добавления - 28.09.2015 в 12:01
andr89 Дата: Понедельник, 28.09.2015, 12:07 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день KSV.
Правильно я понимаю, что этот код не может привести к утечке оперативной памяти, т.к. объект scripting.dictionary удаляется из памяти?
 
Ответить
СообщениеДобрый день KSV.
Правильно я понимаю, что этот код не может привести к утечке оперативной памяти, т.к. объект scripting.dictionary удаляется из памяти?

Автор - andr89
Дата добавления - 28.09.2015 в 12:07
KSV Дата: Понедельник, 28.09.2015, 12:17 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
этот код не может привести к утечке оперативной памяти
не должен, т.к. дескриптор на объект должен корректно закрыться, и после этого "сборщик мусора" винды должен будет освободить память, занимаемую объектом словаря.


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Понедельник, 28.09.2015, 12:20
 
Ответить
Сообщение
этот код не может привести к утечке оперативной памяти
не должен, т.к. дескриптор на объект должен корректно закрыться, и после этого "сборщик мусора" винды должен будет освободить память, занимаемую объектом словаря.

Автор - KSV
Дата добавления - 28.09.2015 в 12:17
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!