gpt4 book ai didi

vba - Excel VBA - 字典.Exists(字典)?

转载 作者:行者123 更新时间:2023-12-02 16:05:45 32 4
gpt4 key购买 nike

想更好地了解如何比较对象类型的键。 dicOverall.exists(dic2) 返回 False,而 dicOverall.exists(dic1) 返回 True。我不太确定 .Exists 如何比较东西(循环?),但无论如何我可以让 .Exists(dic2) 返回 True ?谢谢!

Sub test()
Dim dic1 As Object
Dim dic2 As Object
Dim dicOverall As Object


Set dic1 = CreateObject("scripting.dictionary")
Set dic2 = CreateObject("scripting.dictionary")
Set dicOverall = CreateObject("scripting.dictionary")

dic1("Hi") = 1
dic1("Hello") = 1

dic2("Hi") = 1
dic2("Hello") = 1

dicOverall(dic1) = 1

Debug.Print dicOverall.exists(dic2)


End Sub

最佳答案

我想如果你这样做

dicOverall(dic1) = 1

那么 dicOverall 中唯一存在的键是对象dic1你问 key 是否dic2存在于 dicOverall ?这个答案不可能是true总是false .

dic1dic2是两个完全不同的对象,即使它们包含相同的键。 .exists不比较这些对象的内容,它只是看到这些对象是不同的对象。

示例:
比方说.exists检查盒子里是否有一个特定的物体,并且您有 2 个名为 dic1 的苹果和dic2 。如果你把苹果dic1放入框中并检查 .exists如果苹果dic2在盒子里你会得到一个号码。 .exists不会检查盒子里是否有一个苹果,它会检查是否有一个名为 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 相同的键那么你必须检查...

  1. 如果 dic1dic2具有相同数量的键(如果 dic2 具有 dic1 中的所有键,但加上其他键,则这是必需的!)
  2. 如果first为true则循环遍历dic1的所有键并检查 dic2 中是否存在每个键.

这里有一个关于词典的好资源:VBA DictionaryUsing the Dictionary Class in VBA

关于vba - Excel VBA - 字典.Exists(字典)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42409385/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com