【发布时间】:2018-05-03 19:48:02
【问题描述】:
我正在尝试编写一个“If”语句来检查与(脚本)中名为 Players 的字典中的 Player 对象对应的 Key 是否具有包含字母“P”的 String 值。
我一定遗漏了一些 VBA 语法糖,但我似乎无法在任何地方找到我做错了什么的答案。
我现在的陈述是:
For Each Key In Players.Keys()
If Not (Players(Key).Position Like "*P*") Then 'something'
End If
Next Key
但是,即使 Position 属性中包含 P,它也会选择循环遍历的第一个字典条目。
在这种情况下,Player(Key).Position = "RP," 我想跳过“Then”语句。它目前不起作用。
任何帮助将不胜感激。
编辑
播放器类是:
'Class Module: Player
Public Name As String
Public Position As String
Public WAR As Double
【问题讨论】:
-
我相信您只想测试
Players(Key),它将返回Players字典中该键的值。而不是测试Players(Key).Position。我不确定这里会返回什么“.Position”。这不是字典对象的属性或方法。 -
你也可以通过字典的值而不是
For Each player in Players.Items的键来循环...我不确定你在做什么,所以也许这不是一个选择。 -
@JNevill 我编辑了我的原始帖子以包含播放器类。如果我只使用 Players(Key),它会返回一个 Player 对象,它不是作为字符串的 Position 属性,我想检查它是否包含 P。
-
啊!字典项是一个对象。头脑=吹。现在这是有道理的。如果你在
Players(key).Position的 IF 测试中设置断点,你会得到什么价值。由于您的 If 条件正确,因此似乎有些问题。 -
@JNevill "RP" - 这是最令人困惑的部分
标签: excel vba if-statement vb-like-operator