Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2013, 20:21   #1
and150382
Форумчанин
 
Регистрация: 19.10.2012
Сообщений: 217
По умолчанию Исчезновение CommandButton через заданный промежуток времени.

Форма появляется при открытии книги. Подскажите как сделать чтобы кнопка на форме после открытия исчезла через 10 минут.
and150382 вне форума Ответить с цитированием
Старый 14.02.2013, 20:36   #2
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

В форме пишем
Код:
Private Sub UserForm_Initialize()
    Application.OnTime Now + TimeValue("00:10:00"), "myHide"
End Sub
В модуле пишем
Код:
Sub myHide()
    UserForm1.CommandButton1.Visible = False
End Sub
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 14.02.2013, 21:24   #3
and150382
Форумчанин
 
Регистрация: 19.10.2012
Сообщений: 217
По умолчанию

Спасибо работает!

А скажите что нужно добавить в код . Кнопка исчезла через 10 мин. При закрытии формы и последующем открытии формы она не появлялась, а появлялась только при открытии самой книги ( если я закрою книгу и открою ее, кнопка появится, если закрою форму и открою ее -кнопка не появится)
and150382 вне форума Ответить с цитированием
Старый 14.02.2013, 21:51   #4
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

Код:
Private Sub UserForm_Activate()
  Me.CommandButton1.Visible = True
  Application.OnTime Now + TimeValue("00:10:00"), "myHide"
End Sub
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 14.02.2013, 22:10   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

ИМХО это не решит проблему. Надо где-то хранить инф. о том, что кнопка уже отображалась в течение 10 мин.
Код:
'модуль ЭтаКнига или ThisWorkbook

Public btn_hid As Boolean

'модуль формы

Private Sub UserForm_Initialize()
    If ThisWorkbook.btn_hid Then
        CommandButton1.Visible = False
    Else
        Application.OnTime Now + TimeValue("00:10:00"), "myHide"
    End If
End Sub

'обычный модуль

Sub myHide()
    UserForm1.CommandButton1.Visible = False
    ThisWorkbook.btn_hid = True
End Sub
Можно Sub myHide() тоже разместить в модуле книги, тогда планировщику надо указать так:
Код:
Application.OnTime Now + TimeValue("00:10:00"), "ThisWorkbook.myHide"
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 14.02.2013, 22:37   #6
and150382
Форумчанин
 
Регистрация: 19.10.2012
Сообщений: 217
По умолчанию

Спасибо большое!
and150382 вне форума Ответить с цитированием
Старый 14.02.2013, 22:58   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ещё нужно на закрытие этой книги поставить отмену этого Application.OnTime.
Иначе если например через минуту закрыть файл, но не закрывать Эксель - через 9 минут скорее всего откроется этот файл, чтоб спрятать кнопку (не проверял с этим кодом, но обычно так и бывает).
Если так - то время запуска нужно задавать через переменную, её же и использовать при отмене.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 14.02.2013, 23:09   #8
and150382
Форумчанин
 
Регистрация: 19.10.2012
Сообщений: 217
По умолчанию

А как поставить отмену этого Application.OnTime?

Или время запуска задавать через переменную?

Появляется ошибка через 4 сек

Application.OnTime Now + TimeValue("00:00:05"), "myHide"
If ThisWorkbook.btn_hid Then
CommandButton6.Visible = False
Else
Application.OnTime Now + TimeValue("00:00:05"), "myHide"
End If

Последний раз редактировалось and150382; 14.02.2013 в 23:19.
and150382 вне форума Ответить с цитированием
Старый 14.02.2013, 23:27   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Схема такая (надеюсь прикрутите к событиям):
Код:
Dim NextTime As Date

Sub StartScript()
    MsgBox "Работа пошла!"
    NextTime = Now + TimeValue("00:00:03")
    Application.OnTime EarliestTime:=NextTime, Procedure:="StartScript"
End Sub

Sub StopScript()
    On Error Resume Next
    Application.OnTime EarliestTime:=NextTime, Procedure:="StartScript", Schedule:=False
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 14.02.2013 в 23:40.
Hugo121 вне форума Ответить с цитированием
Старый 14.02.2013, 23:40   #10
and150382
Форумчанин
 
Регистрация: 19.10.2012
Сообщений: 217
По умолчанию

Что то я теперь вообще запутался в этом коде.
and150382 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение действия через промежуток времени chingiz Общие вопросы Delphi 37 03.10.2012 11:33
Присваивание значения через промежуток времени Epc Помощь студентам 43 06.11.2010 15:27
Обновление связей между файлами через заданный промежуток времени alleo Microsoft Office Excel 2 21.10.2010 13:39
Программа для воспроизведения тонового звука через промежуток времени Vl-sn Помощь студентам 9 12.03.2010 20:27
указатель мыши автоматически должен совершать клик по заданному месту на экране, через промежуток времени Deefrost Qt и кроссплатформенное программирование С/С++ 5 16.05.2008 20:25