Есть макрос с использованием словаря (когда-то помогли здесь его освоить). Подскажите пожалуйста, каким образом можно полностью очистить словарь? Не могу разобраться как использовать 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]
Добрый день
Есть макрос с использованием словаря (когда-то помогли здесь его освоить). Подскажите пожалуйста, каким образом можно полностью очистить словарь? Не могу разобраться как использовать 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
Сообщение отредактировал andr89 - Понедельник, 28.09.2015, 11:57
Добрый день! А где вы собираетесь использовать .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]
Добрый день! А где вы собираетесь использовать .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 удаляется из памяти
Добрый день KSV. Правильно я понимаю, что этот код не может привести к утечке оперативной памяти, т.к. объект scripting.dictionary удаляется из памяти?
Добрый день KSV. Правильно я понимаю, что этот код не может привести к утечке оперативной памяти, т.к. объект scripting.dictionary удаляется из памяти?andr89
этот код не может привести к утечке оперативной памяти
не должен, т.к. дескриптор на объект должен корректно закрыться, и после этого "сборщик мусора" винды должен будет освободить память, занимаемую объектом словаря.
этот код не может привести к утечке оперативной памяти
не должен, т.к. дескриптор на объект должен корректно закрыться, и после этого "сборщик мусора" винды должен будет освободить память, занимаемую объектом словаря.KSV