Моя цель - увеличить размер шрифта текстового поля в Excel с помощью VBA. Хотя это легко, что делает эту проблему немного более интересной, так это то, что мне нужен плавный переход от размера шрифта x к размеру шрифта y - анимация.Размер анимации текста с помощью Excel VBA
В настоящее время я использую следующий код:
Option Explicit
Sub AnimateHit()
Dim i As Integer
For i = 1 To 25
ActiveSheet.Shapes.Range(Array("textEnemyHit")).Select
Selection.ShapeRange.TextFrame2.TextRange.Font.Size = i * 10
'Waits for 50ms
Call DelayMs(550)
Application.ScreenUpdating = True
Next
End Sub
'Code from http://stackoverflow.com/questions/18602979/how-to-give-a-time-delay-of-less-than-one-second-in-excel-vba
Private Sub DelayMs(ms As Long)
Debug.Print TimeValue(Now)
Application.Wait (Now + (ms * 0.00000001))
Debug.Print TimeValue(Now)
End Sub
Этот код работает если задержка 600мс или более. Однако, до 600 мс, код не работает. Переход от минимального размера шрифта до максимума возможен без плавного перехода.
Любые идеи о том, как я могу добиться плавного перехода с более высокой частотой кадров?
Спасибо!
Excel является очень медленно при общении с графическим интерфейсом, поэтому вам нужно как можно больше оптимизировать свой код. Удалите debug.prints, не выбирайте форму каждый раз в цикле, устанавливая для нее переменную в начале и ссылаясь на нее с этой переменной, не сохраняйте настройку application.screenupdating – Absinthe