Анимированные точки пользовательской формы Excel при загрузке

Учебников в интернете много. Однако ничего подходящего не нашел. Есть ли способ сделать анимированные точки при загрузке?

Идея состоит в том, чтобы сделать цикл анимированных точек ..... на пользовательской форме, чтобы они появлялись одна за другой, а затем начинались заново после некоторого количества точек.

Итак, я ввожу точку в Label1 и перемещаю ее влево после определенных временных критериев?

Мой текущий код для UserForm:

    Private Sub UserForm_Initialize()
HideTitleBar.HideTitleBar Me
    Call loadingdots
End Sub

Код для Private Sub Workbook_Open():

Loading.Show (vbModeless)

Dim RngCom As Range
Dim RngTurb As Range
Dim RngGen As Range

Application.Wait (Now + TimeValue("00:00:06"))

ThisWorkbook.Worksheets("MAIN").ScrollArea = "$A$1:$BL$45"
    Application.DisplayFormulaBar = False
    ActiveWindow.DisplayHeadings = False
    ActiveWindow.DisplayGridlines = False
  etc...
  Unload Loading
'Application.ScreenUpdating = True
  End Sub

Вы должны взять на себя управление меткой и ввести точку в качестве текста на этикетке. Затем используйте label1.left (левое, правое, верхнее свойство), чтобы переместить их. Вы должны использовать процедуры управления таймером для их автоматического перемещения через определенное время, например 100 миллисекунд, 200 миллисекунд или 500 миллисекунд.

Harun24HR 27.05.2019 09:16

Чтобы добавить к тому, что сказал Харун, вы также можете использовать свойство шрифта для увеличения/уменьшения размера точки (размера шрифта), чтобы имитировать «анимацию».

FAB 27.05.2019 09:20

Не могли бы вы добавить пример? Я не могу заставить его работать, см. мой отредактированный вопрос.

hatman 27.05.2019 10:02
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
3
1 537
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Самым элегантным решением, вероятно, будет Метод OnTime.

Поместите этикетку внутри вашего UF и удалите подпись. Далее в обычном модуле (то есть не в модуле UF) поместите эту подпрограмму:

'this function ensures the self-activating sub will stop if the UF has been closed
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


Public Sub loadingdots()

If IsLoaded("UserForm1") = True Then
    If Len(UserForm1.Label1.Caption = 4) Then
        UserForm1.Label1.Caption = "."
    Else
        UserForm1.Label1.Caption = UserForm1.Label1.Caption & "."
    End If
    Application.OnTime Now + TimeValue("00:00:01"), "loadingdots"
End If

End Sub

Затем вызовите самоактивирующуюся подпрограмму, когда UF инициализируется.

Private Sub UserForm_Initialize()
    Call loadingdots
End Sub

Не забудьте поменять ссылки на УФ на правильное название.

Это работает в других пользовательских формах, я проверил это. Однако есть проблема с пользовательской формой заставки. По какой-то причине анимации нет, и я вижу только первую точку, и она не продвигается вперед. В чем может быть проблема?

hatman 27.05.2019 16:42

Я не знаю, как выглядит этот UF и какой код внутри него. Я знаю, что RefEdits может сильно испортить.

Tim Stack 27.05.2019 16:45

Другие вопросы по теме