«анимация», которая использует сон, занимает больше времени с закрытой IDE, чем с открытой IDE - PullRequest
0 голосов
/ 26 марта 2019

У меня опять странная проблема с Excel-VBA. У меня есть пользовательская форма, на которой я «расту» полосу, используя метку с цветом фона и меняя ее высоту в цикле. Похоже, это

With obj
  Do While Not .highEnough
   .raise
   Sleep 1
   DoEvents
  Loop
End With

Все работает как положено. Единственная странная вещь: если IDE открывается или был открыт во время сеанса Excel, все работает гладко. Но как только я запускаю Excel и запускаю свою программу, анимация занимает больше времени, по крайней мере, в десять раз больше.

Нагрузка на процессор ничем не отличается, поэтому кажется, что команда sleep будет дольше спать? У кого-нибудь была такая же проблема или даже она знает, как этого избежать?

Обновление / редактирование: это увлекательно, сегодня я не могу получить то же поведение в том же файле, что и вчера. Я определенно не могу этого объяснить. Я использую Rubberduck, но закрытие приложения и его повторное открытие должно иметь тот же эффект, что и перезагрузка компьютера, или нет? Или это проблема окон?

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

EDIT:

На всякий случай, если кто-нибудь наткнется на мою проблему. Я обошел его, используя собственную функцию сна. Конечно, время не совсем точное, но, по крайней мере, оно дает мне последовательное поведение.

Public Sub Sleep(microseconds As Long)

Dim t0 As Double

t0 = Timer
Do While Timer - t0 <= microseconds / 1000000#: Loop

End Sub
...