VBA: Почему правильное значение словаря добавляется только после запуска MsgBox? - PullRequest
0 голосов
/ 05 июля 2018

Я столкнулся с определенной причудой в VBA, и я не уверен в постоянном исправлении. Значение добавляется в мой словарь только при срабатывании MsgBox. Я ожидаю, что 12345 будет добавлен в мой словарь. Однако в первом примере ниже это не так.

For i = 2 To lastrow
    If (Not today.exists(.Cells(i, headers.Item("SL_ID")).Value) And _
       .Cells(i, headers.Item("Assigned Date")).Value >= Date - minusDays And _
       Len(.Cells(i, headers.Item("Assigned Status")).Value) > 3 And _
       InStr(LCase(.Cells(i, headers.Item("Assigned Status")).Value), "started") = 0) Then
           today.Add Key:=.Cells(i, headers.Item("SL_ID")).Value, _
            Item:=Array(.Cells(i, headers.Item("Assigned Status")).Value, _
                        .Cells(i, headers.Item("Completion Date")).Value, _
                        .Cells(i, headers.Item("On Hold Comments")).Value, _
                        "-", "-", "-", "-", "Rework", source)
    End If
Next i

Но следующий код с MsgBox действительно работает, как и ожидалось, и 12345 добавляется в мой словарь.

For i = 2 To lastrow
    If (.Cells(i, headers.Item("SL_ID")).Value = "12345") Then
        MsgBox ("Wow, it's 12345")
    End If

    If (Not today.exists(.Cells(i, headers.Item("SL_ID")).Value) And _
       .Cells(i, headers.Item("Assigned Date")).Value >= Date - minusDays And _
        Len(.Cells(i, headers.Item("Assigned Status")).Value) > 3 And _
        InStr(LCase(.Cells(i, headers.Item("Assigned Status")).Value), "started") = 0) Then
                today.Add Key:=.Cells(i, headers.Item("SL_ID")).Value, Item:=Array(.Cells(i, headers.Item("Assigned Status")).Value, .Cells(i, headers.Item("Completion Date")).Value, .Cells(i, headers.Item("On Hold Comments")).Value, "-", "-", "-", "-", "Rework", source)
    End If
Next i

У кого-нибудь есть идея, почему это так? Пауза открытия MsgBox позволяет Excel «догнать» и добавить его правильно? Это известная проблема?

Любая помощь приветствуется. Очевидно, что мое решение не является постоянным решением, и я стремлюсь понять, почему может произойти такая странная вещь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...