|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.01.2011, 02:17 | #1 |
Форумчанин
Регистрация: 21.01.2011
Сообщений: 118
|
Подсветка выделенных ячеек-ограничить диапазон
1.Выделенная ячейка подсвечивается в центре и по вертикали и горизонтали
Как в этом коде ограничить диапазон подсветки (центра - вертикали-горизонтали) + дипазон работы?В моем случае ограничить диапазоном B11:J5000 2.При выделении нескольких ячеек выскакивает ошибка-как ее убрать ? Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count <= 2500 Then ' Проверка на количество ячеек. Слишком большое количество ' выделенных ячеек замедляет работу, т.к. при выполнении макроса ' определяется адрес каждой выделенной ячейки. ActiveSheet.Cells.FormatConditions. Delete Dim RSMin As Integer Dim CSMin As Integer Dim RSMax As Integer Dim CSMax As Integer ' ---------начало блока------------ For Each Target In Selection.Cells If RSMin = 0 Then RSMin = Target.Row If CSMin = 0 Then CSMin = Target.Column If Target.Row < RSMin Then RSMin = Target.Row ElseIf Target.Row > RSMax Then RSMax = Target.Row End If If Target.Column < CSMin Then CSMin = Target.Column ElseIf Target.Column > CSMax Then CSMax = Target.Column End If Next '--------конец блока-------------- ' определяются максимальные и минимальные ' срока и столбец выделенного блока '--------начало блока------------- With Range(Cells(RSMin, 1), Cells(RSMax, 256)) .FormatConditions.Add Type:=xlExpression, Formula1:="=1" .FormatConditions(1).Interior.Color Index = 40 End With '--------конец блока--------------- ' выделяются сроки выделенного диапазона '--------начало блока--------------- With Range(Cells(1, CSMin), Cells(65000, CSMax)) .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=1" .FormatConditions(1).Interior.Color Index = 36 End With '--------конец блока--------------- ' выделяются столбцы выделенного диапазона '--------начало блока--------------- With Range(Cells(RSMin, CSMin), Cells(RSMax, CSMax)) .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=1" .FormatConditions(1).Interior.Color Index = 34 End With '--------конец блока--------------- ' выделяется выделенный диапазон Else End If End Sub Последний раз редактировалось Uralmaster; 31.01.2011 в 03:31. |
31.01.2011, 07:14 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
1. Если у вас в процедуру передается переменная Target
Код:
Код:
Использовать условное форматирование в качестве подсветки - примерно то же самое, что разводить костёр для прикуривания сигареты, ибо оно требует очень много ресурсов Есть же другие способы координатного выделения - чем они вас не устраивают? |
31.01.2011, 09:29 | #3 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Можно так:
Код:
Чем шире угол зрения, тем он тупее.
|
31.01.2011, 12:32 | #4 |
Форумчанин
Регистрация: 21.01.2011
Сообщений: 118
|
Спасибо Сергей за помощь - в вашем файле "Пример" все работает в диапазоне но вот только форматирование при этом вне диапазона пропадает - можно это както поправить ?
|
31.01.2011, 15:31 | #5 |
Форумчанин
Регистрация: 21.01.2011
Сообщений: 118
|
Вот нашел хороший пример координатного выделения
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim addr As String Dim x As Variant Dim rng, c, r, cll As String If NoEvents Then Exit Sub If Target.Cells.Count > 1 Then Exit Sub addr = ActiveCell.Address() x = Split(addr, "$") c = x(1) r = x(2) rng = c & ":" & c & "," & r & ":" & r Range(rng).Select cll = c & r Range(cll).Activate End Sub Как сделать так чтобы: -диапазон подсветки ограничить диапазоном B11:J5000; -дипазон работы ограничить диапазоном B11:J5000; -цвет подсветки сделать светло-зеленым (ячейка выделенная при этом остается без заливки и с рамкой как в оригинале); -оставить только горизонтальное выделение (вертикальное чтоб не работало) |
01.02.2011, 05:42 | #6 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Так устроит?
Код:
Чем шире угол зрения, тем он тупее.
|
01.02.2011, 07:23 | #7 |
Форумчанин
Регистрация: 21.01.2011
Сообщений: 118
|
Все работает только одно надо исправить - снимает форматирование по цвету с ячеек вне диапазона; файл во вложении
Последний раз редактировалось Uralmaster; 01.02.2011 в 08:47. |
01.02.2011, 10:24 | #8 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Код:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 01.02.2011 в 10:29. Причина: Добавлено |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как организовать подсчет ячеек, выделенных определенным цветом? | IgYa | Microsoft Office Excel | 5 | 27.10.2010 12:48 |
Автоматически очистить диапазон ячеек. | agregator | Microsoft Office Excel | 8 | 19.04.2010 11:19 |
Обновление данных в основной таблице из выделенных ячеек дополнительной | semjenion | Microsoft Office Excel | 6 | 09.04.2010 17:52 |
Диапазон ячеек равен 0 | segail | Microsoft Office Excel | 16 | 14.02.2010 22:14 |
Как получить значение выделенных ячеек | SHUR@ | Microsoft Office Excel | 4 | 14.02.2010 18:06 |