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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2019, 23:33   #1
estenha
 
Регистрация: 20.02.2019
Сообщений: 3
По умолчанию Окрашивание активной ячейки с задержкой

Добрый день!
Интересующий меня код я нашел:
Код:
Public OldCell As Range
Private Sub Workbook_Open(): Set OldCell = ActiveCell: End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
    OldCell.Interior.ColorIndex = xlNone: Target.Interior.ColorIndex = 7: Set OldCell = Target
End Sub
http://programmersforum.ru/showpost....73&postcount=7
Активная ячейка окрашивается в определенный цвет.
Хочется, чтобы активная ячейка окрашивалась не сразу, а через какое-то время, т.е. нажал курсор вниз, переместились на ячейку вниз и она окрасилась, например, через три секунды.

p.s. На самом деле хотелось бы менять цвет шрифта, но, как минимум, подходит и этот код - вот только задержка нужна.
estenha вне форума Ответить с цитированием
Старый 21.02.2019, 01:11   #2
estenha
 
Регистрация: 20.02.2019
Сообщений: 3
По умолчанию

Сделал:
Код:
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

Public OldCell As Range

Private Sub Workbook_Open(): Set OldCell = ActiveCell: End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
    OldCell.Interior.ColorIndex = xlNone: Sleep 1000: Target.Interior.ColorIndex = 7: Set OldCell = Target
End Sub
Взял отсюда: https://www.myonlinetraininghub.com/...leep-or-a-loop

Но неудобно - на время задержки "замораживается" курсор, т.е., если, например, не нужно ждать, пока окрасится ячейка и нажать стрелку курсора, то ячейка не сменится, пока работает Sleep.

Вот бы от этого избавиться. Может, кто поможет?
estenha вне форума Ответить с цитированием
Старый 21.02.2019, 06:19   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно без API функций:
Код:
Public OldCell As Range
Private Sub Workbook_Open(): Set OldCell = ActiveCell: End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
    Dim i As Long
    OldCell.Interior.ColorIndex = xlNone
    For i = 1 To 30000: DoEvents: Next
    ActiveCell.Interior.ColorIndex = 7
    Set OldCell = ActiveCell
End Sub
Код должен располагаться в модуле "ЭтаКнига".
Задержка окраски определяется пределом цикла (30000). Подберите требуемое значение.
Пример во вложении.
Вложения
Тип файла: rar Заливка.rar (12.2 Кб, 12 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 24.02.2019, 02:27   #4
estenha
 
Регистрация: 20.02.2019
Сообщений: 3
По умолчанию

То, что нужно! Спасибо!
estenha вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автофильтры по значению в активной ячейки zerbite Microsoft Office Excel 10 03.11.2017 17:30
Значение ячейки на пересечении столбца и активной ячейки Lamo Microsoft Office Excel 2 27.07.2013 20:55
Убрать рамку активной ячейки ratibor Microsoft Office Excel 8 03.07.2012 16:56
Окрашивание активной ячейки ru3000 Microsoft Office Excel 33 14.03.2012 16:17
Данные в ячейке из активной ячейки. ru3000 Microsoft Office Excel 1 28.07.2009 05:29