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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2011, 23:04   #11
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

С цветом сложнее, если Вы не хотите затирать исходную заливку, а выделение вот:
Код:
    rng = c & "8:" & c & "5000, B" & r & ":G" & r
Но нужно дополнительно поставить "защиту от дурака": если он кликнет вне этой зоны, то что-бы ничего не выделялось.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 11.02.2011, 08:37   #12
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

те сделать и включить защиту листа вне зоны выделения так понял ?
Uralmaster вне форума Ответить с цитированием
Старый 11.02.2011, 09:04   #13
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Нет, нужно в начале кода отследить, где кликнул пользователь. И если клик не в нужной зоне - то выход из кода. Если в нужной - то соответственно срабатывает координатное выделение.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 11.02.2011, 09:05   #14
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

еще несколько вопросов если можно
1.
rng = "B" & r & ":G" & r - это для диапазона B:G горизонтальное выделение
а нужно B8:G500 - что добавить - изменить?

2.
если 2 дипазона выделения по горизонтали?

rng = "B" & r & ":G" & r - это для диапазона B:G

а еще + плюсом диапазон по горизонтали K:N
- что добавить - изменить?

3.
Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Нет, нужно в начале кода отследить, где кликнул пользователь. И если клик не в нужной зоне - то выход из кода. Если в нужной - то соответственно срабатывает координатное выделение.
это не знаю как сделать

Последний раз редактировалось Uralmaster; 11.02.2011 в 09:09.
Uralmaster вне форума Ответить с цитированием
Старый 11.02.2011, 11:21   #15
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

1. rng = "B8:G500"
2. union(rng, range("K:N")).select
3. надо знать за каким диапазаном "присматривает" процедура. допустим это диапазон rng, тогда:
If Intersect(rng, Target) Is Nothing Then exit sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.02.2011, 11:32   #16
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

сейчас попробую
вставляю rng = "B8:G500" вниз выделяется весь диапазон по клику
вставляю rng = "B8:G500" в начало
потом If Intersect(rng, Target) Is Nothing Then exit sub
не работает
запутался
Код:
If Target.Cells.Count > 1 Then Exit Sub 'макрос координатное выделение
rng = "B8:G500"
If Intersect(rng, Target) Is Nothing Then Exit Sub
    addr = ActiveCell.Address()
    x = Split(addr, "$")
    c = x(1)
    r = x(2)
    rng = c & "8:" & c & "5000, B" & r & ":G" & r 'пробовал ограничить диапазон по совету Hugo121
    Range(rng).Select
    cll = c & r
    Range(cll).Activate
End Sub
ругается на If Intersect(rng, Target) Is Nothing Then Exit Sub

Последний раз редактировалось Uralmaster; 11.02.2011 в 12:46.
Uralmaster вне форума Ответить с цитированием
Старый 11.02.2011, 11:57   #17
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цитата:
Сообщение от Uralmaster Посмотреть сообщение
еще несколько вопросов если можно
1.
rng = "B" & r & ":G" & r - это для диапазона B:G горизонтальное выделение
а нужно B8:G500 - что добавить - изменить?

2.
если 2 дипазона выделения по горизонтали?

rng = "B" & r & ":G" & r - это для диапазона B:G

а еще + плюсом диапазон по горизонтали K:N
- что добавить - изменить?

3.

это не знаю как сделать
По п.1. - отслеживать в начале кода, где выделение.
По п.2. - rng = "B" & r & ":G" & r & "," & "K" & r & ":N" & r
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 11.02.2011, 13:00   #18
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

По п.2. - rng = "B" & r & ":G" & r & "," & "K" & r & ":N" & r

два диапазона получаются

но если вне диапазона кликаешь-труба ... моргает все что можно
Application.ScreenUpdating = False не помогает

пробую так
Код:
If Target.Cells.Count > 1 Then Exit Sub 'макрос координатное выделение
Application.ScreenUpdating = False 'чтоб не моргало
    addr = ActiveCell.Address()
    x = Split(addr, "$")
    c = x(1)
    r = x(2)
    rng = "B" & r & ":G" & r & "," & "K" & r & ":N" & r  ' ограничить диапазон по совету Hugo121
If Intersect(rng, Target) Is Nothing Then Exit Sub
    Range(rng).Select
    cll = c & r
    Range(cll).Activate
Application.ScreenUpdating = True 'восстанавливаем Screen 
End Sub
затыкается на If Intersect(rng, Target) Is Nothing Then Exit Sub

Последний раз редактировалось Uralmaster; 11.02.2011 в 13:10.
Uralmaster вне форума Ответить с цитированием
Старый 11.02.2011, 14:30   #19
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию вот так нормально

Код:
Set rng = Intersect(Target, Range("B8:G500,K8:N500"))
    If rng Is Nothing Then Exit Sub
вот это надо вставить


Код:
If Target.Cells.Count > 1 Then Exit Sub 'макрос координатное выделение
Application.ScreenUpdating = False 'чтоб не моргало
    addr = ActiveCell.Address()
    x = Split(addr, "$")
    c = x(1)
    r = x(2)
Set rng = Intersect(Target, Range("B8:G500,K8:N500"))
    If rng Is Nothing Then Exit Sub
    rng = "B" & r & ":G" & r & "," & "K" & r & ":N" & r  ' горизонтальное выделение 2-х диапазонов BG KN по совету Hugo121
If Intersect(rng, Target) Is Nothing Then Exit Sub
    Range(rng).Select
    cll = c & r
    Range(cll).Activate
Application.ScreenUpdating = True 'восстанавливаем Screen 
End Sub

все завелось
спасибо участникам форума за советы !

Последний раз редактировалось Uralmaster; 11.02.2011 в 15:30.
Uralmaster вне форума Ответить с цитированием
Старый 11.02.2011, 15:23   #20
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я подумал - нужно, чтоб в двух диапазонах горизонтально выделялось
P.S. А оно так и нужно - сейчас в коде увидел...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение masterenergy Microsoft Office Excel 2 04.09.2009 19:45
Выделение в TEdit Devoto Общие вопросы Delphi 3 15.04.2009 20:42
выделение StasSv Microsoft Office Excel 8 26.01.2009 14:02
выделение StasSv Microsoft Office Excel 2 10.11.2008 17:15
Выделение картинки SergGhost Мультимедиа в Delphi 14 28.09.2008 13:01