Добрый день. Есть учебный код, не мой, не работает у меня. Ошибка в самом начале Dim dicTemp As New Dictionary - User Difined type not difined Что еще интересно, Intel Sense не выдает Dictionary после As (его нет в списке доступных методов и свойств)
Код
Option Explicit
Sub ShowDifferentKeys()
On Error Resume Next
Dim dicTemp As New Dictionary
Dim strShow As String, key As Variant
dicTemp.Add Date, "Date type" ' добавляем ключ с типом дата
dicTemp.Add True, "Boolean type" ' добавляем ключ с логическим типом
dicTemp.Add CDbl(12.4567), "Double type" ' добавляем ключ с типом Double
dicTemp.Add CInt(12999), "Integer type" ' добавляем ключ с типом Integer
dicTemp.Add "Red", "String type" ' добавляем строковый ключ
dicTemp.Add ActiveSheet, "Worksheet object" ' добавляем ключ в виде Worksheet объекта
For Each key In dicTemp.Keys ' перебираем ключи словаря (тут немного забегаю вперёд)
Err.Clear ' очищаю ошибку
' Для каждого элемента словаря формирую строку ключ - тип ключа
' Тип ключа выясняем при помощи функции TypeName
strShow = strShow & CStr(key) & vbTab & vbTab & TypeName(key) & vbCr
' Поскольку у нас один из ключей имеет объектный тип, то CStr(key) выдаст ошибку
' которую мы перехватим и CStr(key) заменим на key.Name
If Err Then strShow = strShow & key.Name & vbTab & vbTab & TypeName(key) & vbCr
Next
' Выведем на экран результат
MsgBox strShow, vbInformation, "Он реально хранит типы ключей!"
End Sub
Заменил New Dictionary на Object - ошибка пропала, но результат макроса - не тот как у автора учебной статьи, у него должно получится как в приложении
На всякий случай - система у меня Windows 7 64 разрядная, excel 2010
Если подключить библиотеку microsoft scripting runtime - возможно заработает и код из книжки. Там про это не написано? Если конечно не MAC... Это не Вам
Ливиан написал: Что еще интересно, Intel Sense не выдает Dictionary после As (его нет в списке доступных методов и свойств)
Это нормально? Я уже в пустом модуле (Public Sub dygh().....End Sub) Intel Sense вызвал между операторами Public Sub - длинное окно выскочило, но и в нем нет Dictionary попробовал (Sub dygh().....End Sub) - тоже пусто Может у меня настройки слетели какие-нибудь?
Похоже код в посте №1 отсюда Там же, если почитать внимательнее, есть и ответ на вопрос автора. Глава: "2. СОЗДАНИЕ DICTIONARY". Делаю позднее связывание, что бы работало везде:
Код
Dim Словарь: Set Словарь = CreateObject("Scripting.Dictionary")