2016-06-23 2 views
1

Итак, я искал всюду, чтобы временно показать текстовое поле в excel. В основном, я пытаюсь показать текст в течение 5 секунд после того, как пользователь нажмет кнопку. Я не хочу, чтобы кто-то «делал код для меня», но вместо этого давал мне указатели. Пользователь нажимает кнопку для переключения языка. Когда эта кнопка нажата, я хочу, чтобы появилось сообщение: «Все значения сброшены». Мой вопрос заключается в следующем: есть ли функция в excel-vba, которая показывает текстовое поле на определенное количество времени, прежде чем исчезнуть или изменит его значение видимости на false?Excel vba Временно введите текст

Остальная часть кода для переключения языка уже выполнена. Я действительно ищу только функцию, которая отключает видимость после времени. (таймер или я не знаю)

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

Спасибо ТАК

Вот мой код до сих пор:

Private Sub Ok_Click() 

startTimer 
Unload Me 

End Sub 

Sub startTimer() 

Application.OnTime Now + TimeValue("00:00:01"), "NextTime" 

End Sub 

Sub NextTime() 

If Sheet3.Range("B5") = 0 Then reset 
If Sheet3.Range("B5") = 0 Then Exit Sub 
Sheet3.Range("B5").Value = Sheet3.Range("B5").Value - TimeValue("00:00:01") 
startTimer 

End Sub 

Sub reset() 

Sheet3.Range("B5") = ("00:00:05") 

End Sub 
+1

'искали everywhere' но не нашел' application.wait' ??? – findwindow

+0

Просто установите форму, покажите форму немодальной и установите таймер на 5 секунд с помощью 'OnTime', чтобы снова скрыть форму. – Ralph

+0

Я попробую обе эти функции и прокомментирую, что сработало лучше для меня. Спасибо. – petithomme

ответ

1

Рассмотрим:

Sub MAIN() 
    Call BoxMaker 

    DoEvents 
    DoEvents 

    newHour = Hour(Now()) 
    newMinute = Minute(Now()) 
    newSecond = Second(Now()) + 5 
    waitTime = TimeSerial(newHour, newMinute, newSecond) 
    Application.Wait waitTime 

    ActiveSheet.Shapes("SPLASH").Delete 
End Sub 


Sub BoxMaker() 
    ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 217.5, 51#, _ 
     482.25, 278.25).Select 
    Selection.Name = "SPLASH" 
    Selection.Characters.Text = "Please Wait for Macro" 
    With Selection.Characters(Start:=1, Length:=21).Font 
     .Name = "Arial" 
     .FontStyle = "Regular" 
     .Size = 36 
     .Strikethrough = False 
     .Superscript = False 
     .Subscript = False 
     .OutlineFont = False 
     .Shadow = False 
     .Underline = xlUnderlineStyleNone 
     .ColorIndex = xlAutomatic 
    End With 
    Selection.HorizontalAlignment = xlCenter 
    Selection.VerticalAlignment = xlCenter 
End Sub 
+0

Отличный ответ. * (+ 1) * с моей стороны. Тем не менее, мне интересно, можно ли улучшить это с помощью [Application.Ontime] (https://msdn.microsoft.com/en-us/library/office/ff196165.aspx). Тогда пользователь может продолжать работать в течение этих 5 секунд. Конечно, пользователь может удалить форму за это время, поэтому вам нужно будет сначала проверить коллекцию «Shapes» на листе, если форма 'SPLASH' все еще существует. Как вы думаете? – Ralph

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