VBA Excel не нравится строка, если заявление - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь написать оператор «If», который проверяет, имеет ли ключ, соответствующий объекту Player в словаре (Scripting.), Называемом Players, строковое значение, содержащее букву «P.».

Мне, должно быть, не хватает синтаксического сахара 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

1 Ответ

0 голосов
/ 03 мая 2018

Это не решит твою проблему, но ... это может помочь. Я не смог воспроизвести это поведение:

Модуль класса игрока:

'Class Module: Player
Public Name As String
Public Position As String
Public WAR As Double

Подпрограмма:

Sub test()
    Dim players As Scripting.Dictionary
    Set players = New Scripting.Dictionary

    Dim pers As Player

    Set pers = New Player
    pers.Position = "RP"
    players.Add "1", pers

    Set pers = New Player
    pers.Position = "What"
    players.Add "2", pers

    Set pers = Nothing

    For Each pkey In players.Keys
        If Not (players(pkey).Position Like "*P*") Then
            Debug.Print players(pkey).Position, "Not a P Player"
        Else
            Debug.Print players(pkey).Position, "Its a P Player"
        End If
    Next

End Sub

Результаты в немедленной панели:

RP            Its a P Player
What          Not a P Player

Как я уже говорил в комментариях, я не знаю, почему это не работает для вас, но, надеюсь, просмотр этого в упрощенном коде может указать на некоторую проблему с вашей реализацией класса, или итерациями словаря, или вашим подобным условием ... или что-то неочевидное в части кода, которой вы поделились.

...