Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос "InvertSelection" - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Макрос "InvertSelection"
Alex_ST Дата: Пятница, 27.08.2010, 09:16 | Сообщение № 1
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Результатом работы данного макроса является выбор всех ячеек текущего листа, которые не были выбраны до его запуска. Т.е. другими словами макрос инвертирует выборку (Selection).
Работает со всеми ячейками листа, поддерживается выделение нескольких несмежных диапазонов.
Достаточно выбрать диапазон ячеек, информацию и форматирование которых необходимо сохранить, и запустить макрос InvertSelection.
В результате его работы выбранными окажутся все ячейки, кроме указанных (выбранных). А уж с выбранным диапазоном можно делать что угодно стандартными средствами Ёкселя: форматировать/расформатировать ячейки, стирать данные, ...
Макрос очень удобен для удаления лишней информации с листа.
Часто применяется мною для обработки чужих "коряво" составленных документов, в которых встречается, например, заливка цветом или установка границ целиком у столбца или строки. Такое "форматирование" либо просто мешает зрительному восприятию, либо при выводе на печать даёт огромное количество лишних лестов. А уж если кем-то "особо одарённым" целиком по столбцу применено условное форматирование, да ещё и с вычисляемым по формуле результатом... Тогда ещё и файл "распухает", и "тормоза" появляются...
[vba]
Код
Sub InvertSelection2()
      '---------------------------------------------------------------------------------------
      ' Procedure : InvertSelection
      ' Author    : :)
      ' URL       : http://www.planetaexcel.ru/forum.php?thread_id=14008
      ' DateTime  : 04.03.2010   00:17
      ' Purpose   : инвертировать Selection
      ' Notes     : Работает со всеми ячейками листа, поддерживается выделение нескольких несмежных диапазонов.
      ' Notes     : в процессе работы создаётся временная КНИГА, поэтому работает в том числе и при защищенной структуре книги
      '---------------------------------------------------------------------------------------
      If Not TypeName(Selection) = "Range" Then Exit Sub
      With Application: .ScreenUpdating = False: .DisplayAlerts = False: .EnableEvents = False: End With
      Dim selAddr As String: selAddr = Selection.Address
      With ActiveSheet
         With Workbooks.Add
            With ActiveSheet
               .Cells.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="0"
               .Range(selAddr).ClearFormats
               selAddr = .Cells.SpecialCells(xlCellTypeAllFormatConditions).Address
            End With
            .Close False
         End With
         .Range(selAddr).Select
      End With
      With Application: .EnableEvents = True: .DisplayAlerts = True: .ScreenUpdating = True: End With
End Sub
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеРезультатом работы данного макроса является выбор всех ячеек текущего листа, которые не были выбраны до его запуска. Т.е. другими словами макрос инвертирует выборку (Selection).
Работает со всеми ячейками листа, поддерживается выделение нескольких несмежных диапазонов.
Достаточно выбрать диапазон ячеек, информацию и форматирование которых необходимо сохранить, и запустить макрос InvertSelection.
В результате его работы выбранными окажутся все ячейки, кроме указанных (выбранных). А уж с выбранным диапазоном можно делать что угодно стандартными средствами Ёкселя: форматировать/расформатировать ячейки, стирать данные, ...
Макрос очень удобен для удаления лишней информации с листа.
Часто применяется мною для обработки чужих "коряво" составленных документов, в которых встречается, например, заливка цветом или установка границ целиком у столбца или строки. Такое "форматирование" либо просто мешает зрительному восприятию, либо при выводе на печать даёт огромное количество лишних лестов. А уж если кем-то "особо одарённым" целиком по столбцу применено условное форматирование, да ещё и с вычисляемым по формуле результатом... Тогда ещё и файл "распухает", и "тормоза" появляются...
[vba]
Код
Sub InvertSelection2()
      '---------------------------------------------------------------------------------------
      ' Procedure : InvertSelection
      ' Author    : :)
      ' URL       : http://www.planetaexcel.ru/forum.php?thread_id=14008
      ' DateTime  : 04.03.2010   00:17
      ' Purpose   : инвертировать Selection
      ' Notes     : Работает со всеми ячейками листа, поддерживается выделение нескольких несмежных диапазонов.
      ' Notes     : в процессе работы создаётся временная КНИГА, поэтому работает в том числе и при защищенной структуре книги
      '---------------------------------------------------------------------------------------
      If Not TypeName(Selection) = "Range" Then Exit Sub
      With Application: .ScreenUpdating = False: .DisplayAlerts = False: .EnableEvents = False: End With
      Dim selAddr As String: selAddr = Selection.Address
      With ActiveSheet
         With Workbooks.Add
            With ActiveSheet
               .Cells.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="0"
               .Range(selAddr).ClearFormats
               selAddr = .Cells.SpecialCells(xlCellTypeAllFormatConditions).Address
            End With
            .Close False
         End With
         .Range(selAddr).Select
      End With
      With Application: .EnableEvents = True: .DisplayAlerts = True: .ScreenUpdating = True: End With
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 27.08.2010 в 09:16
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!