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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2013, 10:57   #1
beal
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 10
По умолчанию Подсветка активной ячейки/диапазона ячеек

Подскажите, как в екселе подсветить активную ячейку? Задача еще в том, чтобы после снятия фокуса восстанивить в данной ячейке прежний формат (цвет).

В vba выполняется код (нашел в и-нете):
Цитата:
Public OldRange As String


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next

Range(OldRange).Interior.ColorIndex = xlNone
Target.Interior.Color = 16641000
OldRange = Target.Address
End Sub
все работает так, как надо, но при потере фокуса исходный цвет ячейки теряется, подскажите, плз, как этого избежать.

Пример - была красная ячейка, при получении фокуса она становится желтой (подсвечивается), при потере фокуса она опять должна стать красной.
beal вне форума Ответить с цитированием
Старый 07.10.2013, 12:52   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

например, так:

Код:
Public LastRange As Range

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  On Error GoTo Ex
  For Each FC In LastRange.FormatConditions
    FC.Delete
  Next FC
  Set FC = Target.FormatConditions.Add(xlExpression, , "ИСТИНА")
  FC.Interior.Color = 16641000
Ex:
  Set LastRange = Target
End Sub
только при этом не получится условное форматирование использовать.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 07.10.2013, 12:59   #3
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Код:
ActiveCell.Interior.ColorIndex
получает код цвета активной ячейки
запомнил, подсветил, ушел а цвет вернул
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!
SaLoKiN вне форума Ответить с цитированием
Старый 07.10.2013, 13:07   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от SaLoKiN Посмотреть сообщение
Код:
ActiveCell.Interior.ColorIndex
получает код цвета активной ячейки
запомнил, подсветил, ушел а цвет вернул
а если выделена область? будете массив запоминать?
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 07.10.2013, 16:08   #5
beal
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
например, так:

Код:
Public LastRange As Range

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  On Error GoTo Ex
  For Each FC In LastRange.FormatConditions
    FC.Delete
  Next FC
  Set FC = Target.FormatConditions.Add(xlExpression, , "ИСТИНА")
  FC.Interior.Color = 16641000
Ex:
  Set LastRange = Target
End Sub
только при этом не получится условное форматирование использовать.
Спасибо!
То, что надо.
beal вне форума Ответить с цитированием
Старый 07.10.2013, 16:13   #6
beal
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 10
По умолчанию

Возможно сделать, чтобы данный скрипт обрабатывал только выборочные листы книги? Т.е. в самом скрипте указать имена листов для которых он должен действовать.
beal вне форума Ответить с цитированием
Старый 07.10.2013, 16:32   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
Dim LastRange As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  On Error GoTo Ex
  For Each FC In LastRange.FormatConditions
    FC.Delete
  Next FC
  Set FC = Target.FormatConditions.Add(xlExpression, , "ИСТИНА")
  FC.Interior.Color = 16641000
Ex:
  Set LastRange = Target
End Sub
вставьте в код нужных листов.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 07.10.2013, 16:42   #8
beal
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
вставьте в код нужных листов.
Спасибо, все работает!
beal вне форума Ответить с цитированием
Старый 07.10.2013, 17:37   #9
beal
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 10
По умолчанию

Работает не совсем корректно:
Назначаю скрипт на Лист2, например. На первом листе есть ячейка с гиперссылкой на ячейку Листа2. Если нажать гиперссылку, то уходим на нужную ячейку второго листа, которая и подсвечивается - все ок. Но:
если файл только что открыт, то при переходе по гиперссылке на Лист2 ячейка не подсвечивается. Если на Листе2 после перехода выбрать любую другую ячейку, то она подсвечивается. Если попробовать опять перейти с Листа1 по гиперссылке на Лист2, то ячейка подсвечивается.
Т.е. скрипт не работает именно на первом обращении после открытия файла.
beal вне форума Ответить с цитированием
Старый 07.10.2013, 19:02   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

beal, у Вас спортивный интерес? (практического я не вижу, стандартными средствами довольно очевидно какая ячейка на листе выделена)
так вот, Вам дали рабочую заготовку, вооружитесь напильником и подгоняйте ее к своим нуждам до полного удовлетворения.

удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Значение ячейки на пересечении столбца и активной ячейки Lamo Microsoft Office Excel 2 27.07.2013 20:55
Дублирование ячеек, диапазона ячеек на новом листе ukrman Microsoft Office Excel 2 03.02.2012 01:06
Уникальная подсветка повторяющихся ячеек serjufa Microsoft Office Excel 4 04.05.2011 07:08
подсветка ячейки denver323 Microsoft Office Excel 1 20.08.2010 16:29
Как получить название диапазона активной ячейки? kipish_lp Microsoft Office Excel 14 15.05.2010 10:18