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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2011, 15:27   #21
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

единственное что плохо при этом способе - когда форматируешь одну ячейку в центре - форматируются все в диапазоне где проходит координатное выделение; наверное это невозможно убрать по определению( или можно ????...)
+ с цветом выделения не решается вопрос
что хорошо - что не убирает исходное форматирование ячеек по цвету как в варианте http://www.programmersforum.ru/showthread.php?t=119806 пост5

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

Код:
'rng = c & ":" & c & "," & r & ":" & r 'выделение горизонт-вертик 
'rng = c & "8:" & c & "5000, B" & r & ":G" & r 'выделение горизонт-вертик диапазон 
'rng = r & ":" & r 'оставить только горизонт. выделение 
'rng = c & ":" & c 'оставить только верт. выделение 
'rng = c & "8:" & c & "5000" 'оставить только верт. выделение 1 диапазон 
'rng = "B" & r & ":G" & r  'оставить только горизонт. выделение 1 диапазон 
rng = "B" & r & ":G" & r & "," & "J" & r & ":N" & r ' гор выд 2 диапазона BE JN
Uralmaster вне форума Ответить с цитированием
Старый 11.02.2011, 16:01   #23
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Можно временно/насовсем отключить эту фишку кнопкой. Или придумать горячие клавиши.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 12.02.2011, 11:58   #24
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

Код:
If Target.Cells.Count > 1 Then Exit Sub 'макрос координатное выделение
Application.EnableEvents = False
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.EnableEvents = True
Application.ScreenUpdating = True 'восстанавливаем Screen 
End Sub
так получше будет
Uralmaster вне форума Ответить с цитированием
Старый 12.02.2011, 12:48   #25
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от Uralmaster Посмотреть сообщение
Код:
If Target.Cells.Count > 1 Then Exit Sub 'макрос координатное выделение
Application.EnableEvents = False
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.EnableEvents = True
Application.ScreenUpdating = True 'восстанавливаем Screen 
End Sub
так получше будет
я бы так не сказал
при событии exit sub у вас будет отключено и обновление экрана и все события

поэтому перед exit sub восстановите события и обновления экрана, либо используйте GOTO
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 12.02.2011, 12:51   #26
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию примерно так

Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub 'макрос координатное выделение
Application.EnableEvents = False
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 GoTo end_err
    Rng = "B" & r & ":G" & r & "," & "K" & r & ":N" & r  ' горизонтальное выделение 2-х диапазонов BG KN по совету Hugo121
'If Intersect(Rng, Target) Is Nothing Then GoTo end_err
    Range(Rng).Select
    cll = c & r
    Range(cll).Activate
end_err:    Application.EnableEvents = True: Application.ScreenUpdating = True 'восстанавливаем Screen
End Sub
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 12.02.2011, 15:08   #27
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
Хорошо

да заметил такое благодарю за поправку
Uralmaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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