Страницы: 1
RSS
Как сделать задержку по времени в VBA
 
Здравствуйте уважаемые.  
Как можно сделать в процедуре задержку по времени, например:  
Скажем при выполнении какого-то условия, остановить выполнение всей процедуре на 3 секунды (сделать паузу), а потом продолжить? Заранее спасибо.
 
application.wait
 
Посмотрите эту тему  
http://www.planetaexcel.ru/forum.php?thread_id=5412  
Возможно, Вам нужно не задержку, а полный останов, с последующим запуском.
 
Спасибо, посмотрел, но думаю это не совсем то. Это моя ошибка, не правильно поставленный вопрос. Не совсем корректный пример, но это то что первым пришло в голову:  
 
Вы пришли в гости, там есть субъект N, с которым вы хотите поговорить попозже, через 20 минут. Вы за ним посматриваете, чтобы он не ушел раньше времени. Если он собирается уходит раньше чем прошло 20 минут, вы подходите к нему сразу, если нет то по прошествии этого времени.  
 
Мне нужна пауза по времени, и в тоже время чтобы процесс шел.
 
grust, попробуйте вот так:  
Application.Wait Now+TimeSerial(0,0,k)  
Как только программа доберётся до этой строки, выполнение следующей начнется через k секунд. Так нужно?
 
{quote}{login=grust}{date=27.09.08 16:39}{thema=}{post}Посмотрел, но думаю это не совсем то.{/post}{/quote}  
 
Чтобы развеять ваши сомнения насчёт то-нето, составил примерчик. Посмотрите, пожалуйста, - что не так?
 
Тут вечером подумав, понял, что есть еще вероятность того что субъект N может сам подойти для разговора до истечения 20 минут. Думаю всё, это полная постановка вопроса.  
 
P.S. Турбо-Ежу и всем кто ответил, большое спасибо. Файл вечером гляну поподробней.
 
1 две процедуры основная и проверочная(поглядывающая)  
 
в основной организовать цикл типа:  
do while flag  
flag= проверочная()  
...  
loop  
...  
 
2 в основной предусмотреть операторы doevents, а в проверочной предусмотреть оператор ontime время, "проверочная"
 
Посмотрел Ваш пример ТУРБО-ЁЖ, можно будет добавить условие №3. Спасибо большое
 
Что-то ничего не получается у меня исполнить этот алгоритм.  
Просьба, помогите люди добрые.
 
Жаль, нет у меня времени порассуждать на тему "Что-то ничего не получается у меня"  
Может Вы файл все-таки приложите, где будет понятно куда и когда субъект N приходит и уходит?
Bite my shiny metal ass!      
 
Эх, Лузер,- а я уже приготовился :-)
 
Добрый день подскажите в приведенном ниже коде производиться обновление вебзапроса, после обновления  эти данные должны скопироваться в другое место, подскажите как прописать задержку чтоб вебзапросы обновились, а потом уже производилось копирование иначе копируються старые данные (еще не обновленные)  
 
Sub погода()  
' Макрос записан 10.09.2010 (Шишкин П.Е.)  
   ActiveWorkbook.RefreshAll  
   Sheets("Погпл 2").Select  
   Application.Run "'ГТП Моргудонская.xls'!delstolb"  
   Sheets("Погода план ").Select  
   Application.Run "'ГТП Моргудонская.xls'!delstolb"  
   pgdcopi  
End Sub  
Private Sub pgdcopi()  
ion  
Application.Wait Now + TimeSerial(0, 0, 50) ' Вот гдето здесь нужно приостановить  
   Dim foundCell As Range, iPgd   As Range  
   Dim i As Byte  
   Dim iDatei As String  
   Sheets("Детка").Select  
         datarezz = Date - 1  
     Sheets("Погода ").Select  
Set r = ThisWorkbook.Worksheets("Погода ").Range("A4000:A50000")  
Set foundCell = r.Find(datarezz) ' LookIn:=xlValues)  
'MsgBox r  
 
   If Not foundCell Is Nothing Then  
     ThisWorkbook.Worksheets("Детка").Range("U3:AA26").Copy  
       ThisWorkbook.Worksheets("Погода ").Cells(foundCell.Row, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False  
   End If  
   Application.CutCopyMode = False  
         
End Sub  
Sub delstolb()  
On Error GoTo Error_del  
   Columns("O:O").Select  
   Selection.TextToColumns Destination:=Range("G1"), DataType:=xlDelimited, _  
       TextQualifier:=xlNone, ConsecutiveDelimiter:=True, Tab:=False, Semicolon _  
       :=False, Comma:=False, Space:=False, Other:=True, OtherChar:=".", _  
       FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True  
Error_del:  
End Sub  
Sub ion()  
   With Application  
       .ScreenUpdating = True 'обновление экрана  
       .DisplayAlerts = True 'системные предупреждения  
       .EnableEvents = True 'контроль событий  
   End With  
End Sub
Оружие не убивает Человека! Человек убивает Человека!!!
 
Borodets, а все эти листы, упомянутые в макросе, нам самим посоздавать? Ну правда пожалейте. Вот так каждый раз выпрашивать:"Помогите нам помочь Вам"... Файл пример, плиз.
Я сам - дурнее всякого примера! ...
 
Короче, посоздавал. Вот эта строка:  
"Application.Wait Now + TimeSerial(0, 0, 1) ' Вот гдето здесь нужно приостановить"  
 
Ничего не даст. А рыть надо в направлении: Application.Run "'ГТП Моргудонская.xls'!delstolb".  
Вот там да, даст. И не факт, что Application.Wait понадобится. Вопрос - как Вам помочь?
Я сам - дурнее всякого примера! ...
 
вотъ пример
Оружие не убивает Человека! Человек убивает Человека!!!
 
попробую избавиться от Application.Run совсем, ибо это автозапись макроса, как попробую отпишусь
Оружие не убивает Человека! Человек убивает Человека!!!
 
вместо  
Sub погода()  
' Макрос записан 10.09.2010 (Шишкин П.Е.)  
ActiveWorkbook.RefreshAll  
Sheets("Погпл 2").Select  
Application.Run "'ГТП Моргудонская.xls'!delstolb"  
Sheets("Погода план ").Select  
Application.Run "'ГТП Моргудонская.xls'!delstolb"  
pgdcopi  
End Sub  
 
сделал    
 
Sub ïîãîäà()  
   ActiveWorkbook.RefreshAll  
   Sheets("Ïîãïë 2").Select  
   delstolb  
   Sheets("Ïîãîäà ïëàí ").Select  
   delstolb  
   pgdcopi  
End Sub  
 
хм почему пкрвый раз кирилица вставилась нормально, а сейчас нет хм интересно
Оружие не убивает Человека! Человек убивает Человека!!!
 
не помогло
Оружие не убивает Человека! Человек убивает Человека!!!
Страницы: 1
Читают тему
Наверх