Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Плавная смена цвета автофигуры. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Плавная смена цвета автофигуры. (Форматирование/Formattings)
Плавная смена цвета автофигуры.
Grell Дата: Четверг, 09.02.2017, 09:23 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 113
Репутация: 0 ±
Замечаний: 60% ±

Excel 2007
Всем доброго дня.
Помогите решить вопрос.

У меня есть макрос записанный рекодером, меняющий цвет автофигуры с красного на зеленый.
Но это изменение происходит мгновенно.

Как заставить макрос - менять цвет автофигуры плавно ?
То есть плавно менять цвет автофигуры с красного цвета - на зеленый цвет, например за 3 секунды.
К сообщению приложен файл: 134548.xls (37.0 Kb)
 
Ответить
СообщениеВсем доброго дня.
Помогите решить вопрос.

У меня есть макрос записанный рекодером, меняющий цвет автофигуры с красного на зеленый.
Но это изменение происходит мгновенно.

Как заставить макрос - менять цвет автофигуры плавно ?
То есть плавно менять цвет автофигуры с красного цвета - на зеленый цвет, например за 3 секунды.

Автор - Grell
Дата добавления - 09.02.2017 в 09:23
anvg Дата: Четверг, 09.02.2017, 10:47 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток.
Задействовать таймер.
Успехов.
 
Ответить
СообщениеДоброе время суток.
Задействовать таймер.
Успехов.

Автор - anvg
Дата добавления - 09.02.2017 в 10:47
bmv98rus Дата: Четверг, 09.02.2017, 10:58 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Использовать формулу прямой в пространсве при известных X, Y, Z которые надо заменить на R ,G, B. Построить её от начального цвета к конечному, и постепенно , за указанное время, продвигаясь по ней менять значения цвета , количество дискретов и пауза между ними - определит скорость и плавность.

Андрей, можно наверно с таймером попроще :-)
[vba]
Код
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
...
sleep 100 ' Милисекунды
[/vba]

использовал идею от сюда
К сообщению приложен файл: Copy_of_134548.xls (52.0 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Четверг, 09.02.2017, 13:46
 
Ответить
СообщениеИспользовать формулу прямой в пространсве при известных X, Y, Z которые надо заменить на R ,G, B. Построить её от начального цвета к конечному, и постепенно , за указанное время, продвигаясь по ней менять значения цвета , количество дискретов и пауза между ними - определит скорость и плавность.

Андрей, можно наверно с таймером попроще :-)
[vba]
Код
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
...
sleep 100 ' Милисекунды
[/vba]

использовал идею от сюда

Автор - bmv98rus
Дата добавления - 09.02.2017 в 10:58
Grell Дата: Четверг, 09.02.2017, 20:48 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 113
Репутация: 0 ±
Замечаний: 60% ±

Excel 2007
bmv98rus, все работает. Спасибо.
 
Ответить
Сообщениеbmv98rus, все работает. Спасибо.

Автор - Grell
Дата добавления - 09.02.2017 в 20:48
Perfect2You Дата: Четверг, 09.02.2017, 21:20 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 237
Репутация: 59 ±
Замечаний: 0% ±

Excel 2010
А у меня ругается на
[vba]
Код
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
[/vba]

EXCEL 2010
Лечится как-то?
 
Ответить
СообщениеА у меня ругается на
[vba]
Код
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
[/vba]

EXCEL 2010
Лечится как-то?

Автор - Perfect2You
Дата добавления - 09.02.2017 в 21:20
bmv98rus Дата: Четверг, 09.02.2017, 21:43 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Perfect2You,

В файле без этого, но если есть желание SLEEP подключить то видимо разница платформы тут например смотрите.
[vba]
Код

01.#If VBA7 Then  
02.    #If Win64 Then  
03.        Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)  
04.    #Else  
05.        Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)  
06.    #End If  
07.#Else  
08.    #If Win64 Then  
09.        Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongLong)  
10.    #Else  
11.        Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)  
12.    #End If  
13.#End If
[/vba]


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Четверг, 09.02.2017, 21:47
 
Ответить
СообщениеPerfect2You,

В файле без этого, но если есть желание SLEEP подключить то видимо разница платформы тут например смотрите.
[vba]
Код

01.#If VBA7 Then  
02.    #If Win64 Then  
03.        Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)  
04.    #Else  
05.        Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)  
06.    #End If  
07.#Else  
08.    #If Win64 Then  
09.        Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongLong)  
10.    #Else  
11.        Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)  
12.    #End If  
13.#End If
[/vba]

Автор - bmv98rus
Дата добавления - 09.02.2017 в 21:43
Perfect2You Дата: Пятница, 10.02.2017, 10:47 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 237
Репутация: 59 ±
Замечаний: 0% ±

Excel 2010
bmv98rus
Да! Спасибище, похоже, общий принцип усмотрел.

Поэкспериментировал с файлом. Интересная особенность: если начинаю вводить в ячейку до достижения конечного цвета, смена цвета прекращается и замирает на том цвете, который был в момент начала ввода.
В коде такого прерывания не увидел - вроде до конца должна программа дорабатывать.

Плохо смотрел? Или это тонкость DoEvents?
 
Ответить
Сообщениеbmv98rus
Да! Спасибище, похоже, общий принцип усмотрел.

Поэкспериментировал с файлом. Интересная особенность: если начинаю вводить в ячейку до достижения конечного цвета, смена цвета прекращается и замирает на том цвете, который был в момент начала ввода.
В коде такого прерывания не увидел - вроде до конца должна программа дорабатывать.

Плохо смотрел? Или это тонкость DoEvents?

Автор - Perfect2You
Дата добавления - 10.02.2017 в 10:47
buchlotnik Дата: Пятница, 10.02.2017, 11:13 | Сообщение № 8
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Цитата
Или это тонкость DoEvents?
ага, любым своим действием на листе вы прерываете работу макроса
 
Ответить
Сообщение
Цитата
Или это тонкость DoEvents?
ага, любым своим действием на листе вы прерываете работу макроса

Автор - buchlotnik
Дата добавления - 10.02.2017 в 11:13
Perfect2You Дата: Пятница, 10.02.2017, 15:37 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 237
Репутация: 59 ±
Замечаний: 0% ±

Excel 2010
bmv98rus!
И все заинтересованные!

Программа из предыдущего приложенного файла около полуночи может зациклиться! В полночь таймер обнуляется.

Выход: вместо
[vba]
Код
      t = Timer + dt
      While Timer < t:  Wend
[/vba]

поставить
[vba]
Код
      t = Date * 86400 + Timer + dt
      While Date * 86400 + Timer < t:  Wend
[/vba]

или запомнить текущую дату
[vba]
Код
    dBeg = Date
[/vba]

и тогда
[vba]
Код
      t = (Date - dBeg) * 86400 + Timer + dt
      While (Date - dBeg) * 86400 + Timer < t:  Wend
[/vba]

В приложенном новом файле реализация немного изменена. Последний параметр теперь - время в секундах, за которое должен измениться цвет. Таймер используется не для ожидания, а только для фиксации времени начала, конца и текущего момента. Грубо говоря, помогает определить: до какого места прямой мы уже добрались.
К сообщению приложен файл: Copy_of_134548_.xls (44.0 Kb)


Сообщение отредактировал Perfect2You - Пятница, 10.02.2017, 15:40
 
Ответить
Сообщениеbmv98rus!
И все заинтересованные!

Программа из предыдущего приложенного файла около полуночи может зациклиться! В полночь таймер обнуляется.

Выход: вместо
[vba]
Код
      t = Timer + dt
      While Timer < t:  Wend
[/vba]

поставить
[vba]
Код
      t = Date * 86400 + Timer + dt
      While Date * 86400 + Timer < t:  Wend
[/vba]

или запомнить текущую дату
[vba]
Код
    dBeg = Date
[/vba]

и тогда
[vba]
Код
      t = (Date - dBeg) * 86400 + Timer + dt
      While (Date - dBeg) * 86400 + Timer < t:  Wend
[/vba]

В приложенном новом файле реализация немного изменена. Последний параметр теперь - время в секундах, за которое должен измениться цвет. Таймер используется не для ожидания, а только для фиксации времени начала, конца и текущего момента. Грубо говоря, помогает определить: до какого места прямой мы уже добрались.

Автор - Perfect2You
Дата добавления - 10.02.2017 в 15:37
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Плавная смена цвета автофигуры. (Форматирование/Formattings)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!