У меня опять странная проблема с 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