Я столкнулся с определенной причудой в 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 «догнать» и добавить его правильно? Это известная проблема?
Любая помощь приветствуется. Очевидно, что мое решение не является постоянным решением, и я стремлюсь понять, почему может произойти такая странная вещь.