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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2009, 07:59   #1
Wildice
Новичок
Джуниор
 
Регистрация: 03.11.2009
Сообщений: 2
По умолчанию Нужно сделать изменение цвета надписи каждые 15 сек

Всем привет!
У меня возникла проблема. В Excel на рабочем листе находятся объекты: 3 текстовых поля, кнопка Старт, кнопка Стоп и надпись. В текстовых полях соответственно отображаются часы, минуты, секнды (текущее время Now), а в надписи меняется текст - в начале минуты пишется "началась новая минута", а в остальное время в ней находится текст "Идет минута". Кнопка Старт запускает время. Стоп останавливает. Требуется, чтобы цвет надписи через 15 сек становился синим (на 5 сек), а потом возвращался к исходному.

Листинг того, что уже работает:

Dim flag As Integer

Private Sub Com1_Click() 'кнопка Старт
Com2.Enabled = True
Com1.Enabled = False
flag = 0 'начальная установка переменной flag в 0
While flag = 0 'организация цикла до оператора Wend
Th = Format(Now(), "hh")
Tm = Format(Now(), "n")
Ts = Format(Now(), "ss")
DoEvents
If Ts = "00" Then
Lab1.Caption = "началась новая минута"
Else
Lab1.Caption = "Идет минута"
End If
Wend
End Sub

Private Sub Com2_Click() 'кнопка Стоп
flag = 1
Com2.Enabled = False 'блокирует кнопку Стоп
Com1.Enabled = True 'делает активной кнопку Старт
End Sub

Куда бы тут пристроить изменение цвета надписи Lab1, да еще с интервалом во времени?
Wildice вне форума Ответить с цитированием
Старый 03.11.2009, 08:40   #2
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Wildice Посмотреть сообщение
Всем привет!
У меня возникла проблема. В Excel на рабочем листе находятся объекты: 3 текстовых поля, кнопка Старт, кнопка Стоп и надпись. В текстовых полях соответственно отображаются часы, минуты, секнды (текущее время Now), а в надписи меняется текст - в начале минуты пишется "началась новая минута", а в остальное время в ней находится текст "Идет минута". Кнопка Старт запускает время. Стоп останавливает. Требуется, чтобы цвет надписи через 15 сек становился синим (на 5 сек), а потом возвращался к исходному.

Листинг того, что уже работает:

Dim flag As Integer

Private Sub Com1_Click() 'кнопка Старт
Com2.Enabled = True
Com1.Enabled = False
flag = 0 'начальная установка переменной flag в 0
While flag = 0 'организация цикла до оператора Wend
Th = Format(Now(), "hh")
Tm = Format(Now(), "n")
Ts = Format(Now(), "ss")
DoEvents
If Ts = "00" Then
Lab1.Caption = "началась новая минута"
Else
Lab1.Caption = "Идет минута"
End If
Wend
End Sub

Private Sub Com2_Click() 'кнопка Стоп
flag = 1
Com2.Enabled = False 'блокирует кнопку Стоп
Com1.Enabled = True 'делает активной кнопку Старт
End Sub

Куда бы тут пристроить изменение цвета надписи Lab1, да еще с интервалом во времени?
Я бы сделал так
Код:
Dim flag As Integer

Private Sub Com1_Click() 'кнопка Старт
dim dr as date, dr as date
dim pr as boolean
dim color as var
Com2.Enabled = True
Com1.Enabled = False
flag = 0 'начальная установка переменной flag в 0
pr=false
dr =now()
While flag = 0 'организация цикла до оператора Wend
dr1 =now()
Th = Format(dr1, "hh")
Tm = Format(dr1, "n")
Ts = Format(dr1, "ss")
DoEvents
If Ts = "00" Then
Lab1.Caption = "началась новая минута"
Else
Lab1.Caption = "Идет минута"
End If
if tmtosd(dr1)-tmtosd(dr)=15 then
   color=lab1.forecolor
   pr=true
   lab1.forecolor=&H00FF0000&
   dr=dr1
endif
if pr and tmtosd(dr1)-tmtosd(dr)=5 then
   pr=false
   lab1.forecolor=color
endif
Wend
End Sub

Private Sub Com2_Click() 'кнопка Стоп
flag = 1
Com2.Enabled = False 'блокирует кнопку Стоп
Com1.Enabled = True 'делает активной кнопку Старт
End Sub

Function tmtosd(dr As Date) As Long
tmtosd = day(dr)*86400+Hour(dr) * 3600 + Minute(dr) * 60 + Second(dr)
End Function
Вот теперь так

Последний раз редактировалось Юнлинг; 03.11.2009 в 12:14. Причина: Ошибка
Юнлинг вне форума Ответить с цитированием
Старый 03.11.2009, 12:09   #3
Wildice
Новичок
Джуниор
 
Регистрация: 03.11.2009
Сообщений: 2
По умолчанию

Супер!
Тут правда "dim dr as date, dr as date" наверно надо было dr1 второй раз написать. А "dim color as var" - это variant что ли? Я так написала, все работает.
Спасибо огромное. Всю ночь ворочалась, искала решение.
Wildice вне форума Ответить с цитированием
Старый 03.11.2009, 12:20   #4
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Wildice Посмотреть сообщение
Супер!
Тут правда "dim dr as date, dr as date" наверно надо было dr1 второй раз написать. А "dim color as var" - это variant что ли? Я так написала, все работает.
Спасибо огромное. Всю ночь ворочалась, искала решение.
Да вы правы. Признаю свою ошибку. A variant нужно для сохранения кода цвета.
Только учтите, что необходимо немного доработать функция tmtosd чтобы учесть переход месяца и года. Ну это вы сами.
Юнлинг вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение цвета girz Общие вопросы Delphi 6 30.05.2009 13:43
БД + изменение цвета TDBCheckbox chel83 Помощь студентам 1 27.02.2009 11:58
ColorBar изменение цвета Vladya Помощь студентам 1 19.11.2008 10:09
Как сделать чтобы макрос выполнялся сам каждые 10 минут? Град SQL, базы данных 0 26.05.2008 16:12
Изменение цвета Artem Общие вопросы Delphi 5 12.07.2007 09:07