Добрый день форумчане. Очередная просьба о помощи. Поиск применял, ничего найти не смог. Необходим макрос, который бы через заданное время перелистывал все не скрытые листы книги (при этом листы могут добавляться/удаляться/переименовываться). И еще один момент в книге уже используется один макрос, который запускает внешнее приложение и копирует оттуда данные каждую минуту - не будут ли они мешать друг другу. Заранее спасибо.
Автоматическое перелистывание всех не скрытых листов книги
08.07.2012 13:35:08
|
|
|
|
08.07.2012 14:07:39
vikttur, Ваш код я хочу опробовать, только подскажите как задать время на задержку исполнения For each shts.
|
|
|
|
08.07.2012 14:28:14
Application.Wait Now + TimeValue("0:00:05")
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг |
|
|
|
08.07.2012 14:58:27
можно просто прервать такой макрос - нажав Esc.
но возобновить с прерванной позиции... дополнительные телодвижения (команды в макросе) таки нужны. честно говоря, ваша задача мне кажется настолько абсурдной... (я не хочу вас задеть, то это действительно так - я не вижу в пролистывании никакого смысла). что вы хотите этим добиться?
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг |
|
|
|
08.07.2012 15:14:22
В таком случае для отображения нужен только один лист, куда будет подтягиваться интересующая в данный момент информация.
|
|
|
|
08.07.2012 15:41:14
не знаю...
была мысль - повесить вызов макроса не перелистывания, а показа следующего за активным листа на таймер... в макросе - проверять, не запущен ли макрос обновления данных из внешнего источника. если запущен - выход... но что тогда делать с таймером?.. время-то пройдёт. -48484-
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг |
|
|
|
08.07.2012 17:56:09
на скорую руку (возможно, есть вариант попроще)
Sub nxsheet() Dim idx%, f As Boolean idx = ActiveSheet.Index: f = False Do Until f If idx = ThisWorkbook.Sheets.Count Then idx = 1 Else idx = idx + 1 If ThisWorkbook.Sheets(idx).Visible Then f = True Loop ThisWorkbook.Sheets(idx).Activate Application.OnTime Now + 10 / 24 / 60 / 60, "nxsheet" End Sub вставляется в стандартный модуль этой же книги. запускается один раз вручную, затем автоматом каждые 10 секунд.
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг |
|
|
|
08.07.2012 18:01:53
гм... при наличии нескольких открытых книг и ручном переключении между ними может глючить.
лучше с проверкой: Sub nxsheet() Dim idx%, f As Boolean If ActiveSheet.Parent Is ThisWorkbook Then idx = ActiveSheet.Index Do Until f If idx = ThisWorkbook.Sheets.Count Then idx = 1 Else idx = idx + 1 If ThisWorkbook.Sheets(idx).Visible Then f = True Loop ThisWorkbook.Sheets(idx).Activate End If Application.OnTime Now + 10 / 24 / 60 / 60, "nxsheet" End Sub а вообще-то вам PowerPoint не мешало бы освоить, имхо :)
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг |
|
|
|
08.07.2012 18:11:27
{quote}{login=shurenok}{thema=}{post}ибо рабочий день закончился.{/post}{/quote}
гм... а в наших краях нынче воскресенье :)
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг |
|
|
|
Читают тему