Я думаю, что если вы
dicOverall(dic1) = 1
тогда единственный существующий ключ в dicOverall
является объектом dic1
и вы спрашиваете, если ключ dic2
существует в dicOverall
? Этот ответ не может быть true
это всегда false
.
dic1
и dic2
- это 2 совершенно разных объекта, даже если они содержат одни и те же ключи. .exists
не сравнивает содержимое этих объектов, он просто видит, что эти объекты являются разными объектами.
Пример:
Скажем .exists
проверяет, является ли конкретный объект находится в поле и у вас есть 2 яблока, называемых dic1
и dic2
. Если вы положите яблоко dic1
в коробку и отметьте с .exists
, если яблоко dic2
находится в коробке, вы получаете нет. .exists
не проверяет, есть ли a яблоко в коробке проверяет, есть ли конкретное яблоко с именем dic2
находится в коробке. Даже если они оба яблоки и выглядят одинаково.
Sub AppleExample()
Dim apple1 As Object
Dim apple2 As Object
Dim box As Object
Set apple1 = CreateObject("scripting.dictionary")
Set apple2 = CreateObject("scripting.dictionary")
Set box = CreateObject("scripting.dictionary")
'apple1 has 1 stem and a red color
apple1("stem") = 1
apple1("redColor") = 1
'apple2 has 1 stem and a red color
apple2("stem") = 1
apple2("redColor") = 1
'put apple1 into the box
box(apple1) = 1
'check if apple2 is in the box
Debug.Print box.exists(apple2)
End Sub
Если вы хотите, чтобы проверить, есть ли что-то в коробке, которая выглядит как apple1
, но на самом деле apple2
, то вы должны проверить все свойства (стебель, цвет, ...) сами.
Если вы хотите проверить, если dic1
имеет те же ключи, как dic2
то вы должны проверить ...
- если
dic1
и dic2
имеют одинаковое количество ключей (необходимых, если dic2
имеет все ключи от dic1
, но плюс другие ключи!)
- Если сначала верно, тогда пропустите все клавиши
dic1
и проверьте, существует ли каждый ключ в dic2
.
Вот хороший ресурс о словарях: VBA Dictionary и Using the Dictionary Class in VBA
вы сначала должны добавить dic2 к dicOverall, перед тем, что он, очевидно, Безразлично 't существует в dicOverall – gizlmo
Вам нужно добавить этот ключ к dic2, это то, что Exists проверяет. – SJR
Добавьте эту строку: 'dicOverall (dic2) = 1' –