Страницы: 1
RSS
Userform. Смена надписей во время выполнения кода.
 
Здравствуйте!
Столкнулся с такой проблемой - нужно, что бы во время выполнения кода листбокс отображал стадию процесса.
Ни как не получается.
вот такой простенький код
Код
Private Sub CommandButton1_Click()
Dim i, t
t = Timer
Me.Label1 = "Цикл 1"
For i = 1 To 200000000
Next
Debug.Print Timer - t
Me.Label1 = "Цикл 2"
For i = 1 To 200000000
Next
Me.Label1 = "Цикл 3"
For i = 1 To 200000000
Next
Debug.Print Timer - t
End Sub


зы. у меня код выполняется около 10 с, специально для надписей.
 
?
Код
Private Sub CommandButton1_Click()
Dim i, t
t = Timer
Me.Label1 = "Цикл 1"
Me.Repaint
For i = 1 To 200000000
Next
'Debug.Print Timer - t
Me.Label1 = "Цикл 2"
Me.Repaint
For i = 1 To 200000000
Next
Me.Label1 = "Цикл 3"
Me.Repaint
For i = 1 To 200000000
Next
'Debug.Print Timer - t
Unload Me
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Sanja, ни чего не меняет. Тем более это пример, походу там много чего вместо дебага выполняется.
Или это может только на моем компе только "Цикл 3" в конце показывает?
Упсс... не заметил добавки..
Спасибо!, в примере работает. Проверю в рабочем файле.
Изменено: Михаил С. - 21.02.2016 15:07:28
 
Код
Me.Label1.Caption = "Цикл 1"
DoEvents
For i = 1 To 200000000
 
doevents тоже поможет.
А вот что лучше - сразу не скажу,
 
Цитата
Апострофф написал: А вот что лучше - сразу не скажу
Лучше DoEvents, т.к. в этом случае перерисовка экрана точно произойдет, а вот Repaint просто кинет в очередь и будет ждать, пока ОС "перерисует".
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо всем, попробую и то и то.
 
Цитата
The_Prist написал: Лучше DoEvents, т.к....
Спасибо, буду знать
Согласие есть продукт при полном непротивлении сторон
 
Да, DoEvents работает надежнее.
 
А что, есть проблемы применить Me.Repaint:DoEvents? :)
 
Сразу обе? А зачем?
 
DoEvents будет толкачём для Repaint )
 
Ну зачем-то ведь придумали Repaint :)
 
DoEvents тоже нужно на место воткнуть.
Года 3 назад сделал прогрессбар.
Дома в 2007 все работает, на работе в 2010 - через раз.  :cry:
Передвинул DoEvents на строчку (или две) - стало везде работать.  :)
Страницы: 1
Наверх