Вопрос : Scripting словарь

Hi специалисты, ощупывание

I am полно тупое о этом по мере того как я не могу получить, что макрос ниже работал - он находится в прикрепленном file.

All, котор я хочу сделать должен создать уникально список деталей в словаре и вывести наружу его к рабочий лист. Не может быть гораздо легке. Я могу сделать его с собранием без даже думать о ем но…

I даже использовало Scripting словарь успешно в нескольких вопросов но это время в моем пробном архиве, dunno I, помох устанавливало над me.

Patrick
class= " ясное " >
> " codeSnippet " class=
class= " lineNumbers "
class=
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
>Sub " class= " id= " codeSnippet819215
           
class= " lastRow
>Attachments " имени " class= class= " значение "
>

filename " class= >Dict-test-01.xls (30 KB) яваскрипт " href= " " attachmentDetails class= (тип архива детали)
class= " описание " >xls
class=
>
class=

Ответ : Scripting словарь

Патрик,

Немного вещей, которые адресованы в моем http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/A_3391-Using-the-Dictionary-Class-in-VBA.html статьи

1) Не похоже на собранию, вы не можете сослаться к деталям в словаре using индекс.  Довольно, в словаре, вы можете только fetch одиночный деталь если вы поставляете свой ключа.  Так, ваша петля:

    Для I = 1 к dic. Отсчет
        . Клетки (I, «c») = dic. Деталь (I)
    Затем iий

не вытянет вне детали от словаря.  Деиствительно, из-за словаря «подразумеваемого добавьте» поведение, та петля фактическ добавляет новые детали к словарю:)

2) Вы фактическ добавляли ряд как ключ, и не значение клетки, в вашей первой петле:

    Для каждого celle в rng
        Если не dic.exists (celle) после этого
            dic. Добавьте celle, celle
        Закончитесь если
    Следующее celle

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

******************

Так, зафиксировать Кодего:

1) Точно передайте значения клеток, и не клетки сами, к словарю.  Или, используйте переход блока для того чтобы создать блок в памяти, и после этого закрепляйте петлей через блок и передавайте значения блока к словарю

2) Сбросьте детали в блок

3) Сделайте переход блока для писания значений к рабочий лист

Патрик
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
Sub dict_test ()
    
    Тусклое rng как ряд
    Тусклое celle как ряд
    Тусклые dic_items как вариант
    Затемните I как длиной
    Затемните x как вариант
    
    Затемните dic как Scripting.Dictionary
    Установите dic = новое Scripting.Dictionary
    dic.CompareMode = 1
    
    С листами («Sheet1»)
        Установите rng = ряд (. Клетки (1, «a»). Клетки (. Rows.Count, «a»). Конец (xlUp))
    
        Для каждого celle в rng
            Если не dic.exists, то (celle. Значение) после этого
                dic. Добавьте celle. Значение, celle. Значение
            Закончитесь если
        Следующее celle
        
        dic_items = dic. Детали
        
        . [c: c] .ClearContents
        . [c1]. Измените размеры (dic. Подсчитайте, 1) = Application.Transpose (dic_items)
    Закончитесь с
    
    Установите dic = ничего
    
Закончите подводную лодку
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us