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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2018, 11:10   #1
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию Очистка данных по условию нахождения активной ячейки

Здравствуйте.
Подскажите как корректно выполнить условие для очистки данных?
«Если активная ячейка выделенной области таблицы находится в диапазоне Шапка» то код не выполняется и выполняется от обратного.
Код:
Sub УдалениеВыбранного()

        If Not Intersect(ThisWorkbook.Names("Шапка").RefersToRange, ActiveCell) Is Nothing Then  'Если активная ячейка находится в диапазоне ("Шапка")
            
            MsgBox "Выделение некорректно. Выделите необходимый рабочий диапазон ячеек для очистки."
    
        Else
            
            ActiveSheet.Unprotect                           'Снять защиту листа
            Selection.ClearContents                         'Удалить значения
            Selection.Borders.LineStyle = xlNone            'Удалить границы
            ActiveSheet.Protect                             'Установить защиту листа
        
        End If
    
End Sub
Дело в том, что если выделить область таблицы по диагонали снизу в верх и затронуть область диапазона Шапка, то активная ячейка выделения будет находится в не области диапазона Шапка и тогда удаляется область выделения диапазона Шапка.

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

Код:
  If Intersect(ThisWorkbook.Names("Шапка").RefersToRange, Selection) Is Nothing Then  'Если активная ячейка находится в диапазоне ("Шапка")
    ActiveSheet.Unprotect                           'Снять защиту листа
    Selection.ClearContents                         'Удалить значения
    Selection.Borders.LineStyle = xlNone            'Удалить границы
    ActiveSheet.Protect                             'Установить защиту листа
  Else
    MsgBox "Выделение некорректно. Выделите необходимый рабочий диапазон ячеек для очистки."
  End If
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.10.2018, 22:11   #3
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Игорь благодарю! Работает!
segail вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистка ячейки по условию ольгаг Microsoft Office Excel 4 16.01.2017 11:08
Сделать ячейку активной / неактивной по условию Cluster Microsoft Office Excel 10 31.07.2015 09:50
Перенос данных с ячейки в ячейку по условию Perova irina Microsoft Office Excel 13 25.01.2015 17:08
Значение ячейки на пересечении столбца и активной ячейки Lamo Microsoft Office Excel 2 27.07.2013 20:55
Окрашивание активной ячейки ru3000 Microsoft Office Excel 33 14.03.2012 16:17