Вызовите DisplayCurrentTime Enlightenment - PullRequest
0 голосов
/ 01 мая 2019

Я хочу отобразить активное время в label8, но у меня возникают проблемы при вызове DisplayCurrentTime() в пользовательской форме инициализации.

Я новичок в изучении и я просматриваю Stackoverflow для ответов

Private Sub UserForm_Initialize()

    Book2.UserForm1.DisplayCurrentTime
End Sub 

У меня есть эти, чтобы попытаться вызвать его

Sub DisplayCurrentTime()
    Dim nextSecond As Date

  nextSecond = DateAdd("s", 1, Now())

  Label8.Caption = Time()

  Application.OnTime _
    Procedure:="DisplayCurrentTime", _
    EarliestTime:=nextSecond, _
    LatestTime:=nextSecond
End Sub

, и у меня есть эти строки для работы в label8

Ответы [ 3 ]

0 голосов
/ 01 мая 2019

Измените процедуру DisplayCurrentTime() на Public

Public Sub DisplayCurrentTime()
  'your code here...
End Sub

Это устанавливает «уровень модуля» как доступный извне.

Примечание. Public Property и Sub/Function будут доступны всем снаружи во всех модулях и во всех приложениях, если только не действует Option Private Module

0 голосов
/ 01 мая 2019

Нашли этот код здесь: https://www.youtube.com/watch?v=H5649YiZjZM

Private Sub UserForm_Activate()
Do
    DoEvents
    Label8.Caption = Time
    Loop
End Sub

Этот код работает и делает то, что я хочу. Спасибо всем за помощь всем @Tim Stacks и @Rawrplus!

0 голосов
/ 01 мая 2019

Поместите DisplayCurrentTime внутри модуля UserForm. Затем вы можете вызвать сабвуфер следующим образом

Private Sub UserForm_Initialize()
    Book2.UserForm1.DisplayCurrentTime
End Sub 

Private Sub DisplayCurrentTime()
    Dim nextSecond As Date

    nextSecond = DateAdd("s", 1, Now())

    Label8.Caption = Time()

    Application.OnTime _
      Procedure:="UserForm1.DisplayCurrentTime", _
      EarliestTime:=nextSecond, _
      LatestTime:=nextSecond + 1
End Sub

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

Private Sub UserForm_Initialize()
    DisplayCurrentTime Me, "Label8"
End Sub 

Sub ниже в другом модуле

Sub DisplayCurrentTime(UF As UserForm, Cntrl_Name As String)
    Dim nextSecond As Date

    nextSecond = DateAdd("s", 1, Now())

    UF.Controls.Item(Cntrl_Name).Caption = Time()

    'If the control you want to paste the date to is Label8 for every UF, use the commented out code instead..
    '..and remove ", Cntrl_Name As String" from this sub, and...
    '..remove the specified control in the UserForm_Initialize sub

    'UF.Controls.Item("Label8").Caption = Time()

     'Module1 is true in my case, edit to suit your project
     Application.OnTime _
      Procedure:="Module1.DisplayCurrentTime", _
      EarliestTime:=nextSecond, _
      LatestTime:=nextSecond + 1
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...