У меня есть код для имитации "пузырей" при загрузке книги. Я пытался заставить их появиться на Workbook_open, но что-то не так, и мой код не работает правильно. Точки не работают. Я думаю, что проблема в текущем коде с Application.OnTime Now + TimeValue("00:00:01")
Используемый код: Анимированные точки Excel в форме при загрузке
Если я запускаю UserForm отдельно только командой .Show
, все работает.
Вот мой код для пользовательской формы:
Private Sub UserForm_Initialize()
Dim AppXCenter, AppYCenter As Long
Dim bytOpacity As Byte
bytOpacity = 192 ' variable keeping opacity setting
hWnd = FindWindow("ThunderDFrame", Me.Caption)
Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, GetWindowLong(Me.hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
Call SetLayeredWindowAttributes(Me.hWnd, 0, bytOpacity, LWA_ALPHA)
AppXCenter = Application.Left + (Application.Width / 2)
AppYCenter = Application.Top + (Application.Height / 2)
With Me
.StartUpPosition = 0
.Top = AppYCenter - (Me.Height / 2)
.Left = AppXCenter - (Me.Width / 2)
End With
HideTitleBar.HideTitleBar Me
Application.OnTime Now + TimeValue("00:00:01"), "loadingdots"
End Sub
Loadingdots:
Public Sub loadingdots()
If IsLoaded("Loading") = True Then
If Len(Loading.Label2.Caption) = 10 Then
Loading.Label2.Caption = "."
Else
Loading.Label2.Caption = Loading.Label2.Caption & "."
End If
Application.OnTime Now + TimeValue("00:00:01"), "loadingdots"
End If
End Sub
Проверить, загружен ли:
Public Function IsLoaded(form As String) As Boolean
Dim frm As Object
For Each frm In VBA.UserForms
If frm.Name = form Then
IsLoaded = True
Exit Function
End If
Next frm
IsLoaded = False
End Function