Страницы: 1
RSS
У словаря есть ключ 0, но нету ключа "". при этом при проверке даёт результат, что имеется ключ ""
 
Добрый день.
Почему код:
Код
Sub dd()
Set dic = CreateObject("Scripting.Dictionary")
dic(0) = 99
MsgBox dic.exists(Cells(7, 7).Value)
End Sub
возвращает True при пустой ячейке Cells(7, 7)
???

Ведь, у этого словаря нет ключа, равного "" (ведь значение пустой ячейки равно именно "")
 
Здравствуйте, Бахтиёр! Вы обнаружили любопытный эффект:
Код
Sub dd1()
    Dim dic, keys
    Set dic = CreateObject("Scripting.Dictionary")
    dic(0) = 1
    dic("") = 2
    MsgBox dic(Empty)
End Sub

Sub dd2()
    Dim dic, keys
    Set dic = CreateObject("Scripting.Dictionary")
    dic("") = 2
    dic(0) = 1
    MsgBox dic(Empty)
End Sub

У меня первый макрос выдает 2, второй 1. Получается, что при перестановке присвоений результат меняется.
Владимир
 
Цитата
Бахтиёр написал:
ведь значение пустой ячейки равно именно ""
здесь заблуждение
"Значение Empty указывает переменную Variant, которая еще не была инициализирована (ей не было назначено начальное значение). Переменная Variant со значением Empty равна 0 при использовании в числовом контексте и строке нулевой длины ("") при использовании в строковом контексте."
https://docs.microsoft.com/ru-ru/office/vba/language/reference/user-interface-help/variant-data-type
Код
Sub dd()
Dim dic As Object, x
Set dic = CreateObject("Scripting.Dictionary")
dic("") = "String"
dic(0) = "Zero"
Debug.Print dic(CStr(x))
End Sub
Изменено: Максим Зеленский - 07.07.2020 19:31:53
F1 творит чудеса
 
Максим, понятно, спасибо
Страницы: 1
Наверх