2016-11-16 4 views
0

Я пытаюсь создать в Excel VBA всплывающее окно, которое автоматически закрывается после заданного WaitTime в считанные секунды. Я консультировался по теме «VBA Excel macro message box auto close», а также this и this ссылок. Я попытался применить метод из упомянутого потока StackExchange; мой код выглядит следующим образом:Отображать всплывающее окно за период в Excel

Sub TestSubroutine() 

Dim TemporalBox As Integer 
Dim WaitTime As Integer 
Dim WScriptShell As Object 

Set WScriptShell = CreateObject("WScript.Shell") 

WaitTime = 1 
TemporalBox = WScriptShell.Popup("The message box will close in 1 second.", _ 
WaitTime, "File processed") 

End Sub 

Однако это, кажется, не работает, отображается всплывающее окно, но оно никогда не закрывается через 1 секунду.

Кто-нибудь видит, что я делаю неправильно?


Редактировать # 1

основе @Skip Вступительный комментарий, я обновил код:

Sub TestSubroutine() 

Dim WaitTime As Integer 

WaitTime = 1 
CreateObject("WScript.Shell").Popup "The message box will close in 1 second.", _ 
WaitTime, "File processed" 

End Sub 

Однако это не решает оригинальный вопрос, всплывающее окно не закрывается через 1 секунду.

Edit # 2

Это код, предложенный @Glitch_Doctor, однако он по-прежнему не работает:

Sub TestSubroutine() 

Dim TemporalBox As Integer 
Dim WaitTime As Integer 
Dim WScriptShell As Object 
Dim test 

Set WScriptShell = CreateObject("WScript.Shell") 

WaitTime = 1 
Select Case TemporalBox = WScriptShell.Popup("The message box will close in 1 second.", _ 
WaitTime, "File processed") 
    Case 1, -1 
End Select 

End Sub 
+0

Вы можете вызвать всплывающее окно в одной строке: «CreateObject (« WScript.Shell »). Popup« Это сообщение », 1,« Это заголовок », 0 + 64 '' Это только усложняется, если вы 'пытаюсь захватить ответ, который я не думаю, что вы хотите, если 'Wait' = 1 секунда –

+0

Спасибо за отзыв. Однако это не решает исходную проблему, всплывающее окно остается открытым. Я обновил оригинальный пост. –

+0

Эта вторая часть кода работает для меня. Появится окно, затем автоматически закрывается секунда. –

ответ

0

я, наконец, нашел очень простое решение - кредиты @Orphid, увидеть его ответ в следующем thread.

Я не решил проблему, связанную с моим исходным кодом, но мне удалось создать PopUp, который закрывается через определенный промежуток времени. Код выглядит следующим образом:

Sub subClosingPopUp(PauseTime As Integer, Message As String, Title As String) 

Dim WScriptShell As Object 
Dim ConfigString As String 

Set WScriptShell = CreateObject("WScript.Shell") 
ConfigString = "mshta.exe vbscript:close(CreateObject(""WScript.Shell"")." & _ 
       "Popup(""" & Message & """," & PauseTime & ",""" & Title & """))" 

WScriptShell.Run ConfigString 

End Sub 

Это работает просто отлично.

0

Вы просто отсутствует Select Case:

WaitTime = 1 
Select Case TemporalBox = WScriptShell.Popup("The message box will close in 1 second.", _ 
WaitTime, "File processed") 
    Case 1, -1 
End Select 

Я тестировал и это работает ...

+0

Я получаю ошибку выполнения 424: объект требуется, когда я пытаюсь выполнить этот код , –

+0

Извините, я использовал ваш оригинальный код, он работает с этими 'Dim''s –

+0

Я пробовал это, но он не работает. –

1

Другой подход (если вы вообще не работаете).

Создать новую UserForm с именем frm_Popup и добавить ярлык там под названием lbl_Message. Добавьте следующий код недействительным UserForm:

Public Sub StartProcess(iTime As Integer) 
    Me.lbl_Message.Caption = "The message box will close in " & iTime & " second(s)." 
End Sub 

затем в модуле:

Sub ShowMessage() 
    Dim iTimeToWait As Integer 
     iTimeToWait = 2 

    With frm_Popup 
     .Show False 
     Call .StartProcess(iTimeToWait) 
    End With 

    Application.OnTime Now + TimeValue("00:00:" & iTimeToWait), "HidePopup" 
End Sub 

Private Sub HidePopup() 
    Unload frm_Popup 
End Sub 
+0

Я думал о том, чтобы спуститься по маршруту «Application.OnTime», как только закончил свой отчет, над которым я работаю ... Хорошо сыграл сэр. –

Смежные вопросы