Скрытие/отображение ненужных строк и столбцов
Постановка задачи
Предположим, что у нас имеется вот такая таблица, с которой приходится «танцевать» каждый день:
Кому таблица покажется маленькой — мысленно умножьте ее по площади в двадцать раз, добавив еще пару кварталов и два десятка крупных российских городов.
Задача — временно убирать с экрана ненужные в данный момент для работы строки и столбцы, т.е.,
- скрывать подробности по месяцам, оставляя только кварталы
- скрывать итоги по месяцам и по кварталам, оставляя только итог за полугодие
- скрывать ненужные в данный момент города (я работаю в Москве — зачем мне видеть Питер?) и т.д.
В реальной жизни примеров таких таблиц — море.
Способ 1. Скрытие строк и столбцов
Способ, прямо скажем, примитивный и не очень удобный, но два слова про него сказать можно. Любые выделенные предварительно строки или столбцы на листе можно скрыть, щелкнув по заголовку столбца или строки правой кнопкой мыши и выбрав в контекстном меню команду Скрыть (Hide):
Для обратного отображения нужно выделить соседние строки/столбцы и, щелкнув правой кнопкой мыши, выбрать в меню, соответственно, Отобразить (Unhide).
Проблема в том, что с каждым столбцом и строкой придется возиться персонально, что неудобно.
Способ 2. Группировка
Если выделить несколько строк или столбцов, а затем выбрать в меню Данные — Группа и структура — Группировать (Data — Group and Outline — Group), то они будут охвачены прямоугольной скобкой (сгруппированы). Причем группы можно делать вложенными одна в другую (разрешается до 8 уровней вложенности):
Более удобный и быстрый способ — использовать для группировки выделенных предварительно строк или столбцов сочетание клавиш Alt+Shift+стрелка вправо, а для разгруппировки Alt+Shift+стрелка влево, соответственно.
Такой способ скрытия ненужных данных гораздо удобнее — можно нажимать либо на кнопку со знаком «+» или «—«, либо на кнопки с цифровым обозначением уровня группировки в левом верхнем углу листа — тогда все группы нужного уровня будут сворачиваться или разворачиваться сразу.
Кроме того, если в вашей таблице присутствуют итоговые строки или столбцы с функцией суммирования соседних ячеек, то есть шанс (не 100%-ый правда), что Excel сам создаст все нужные группировки в таблице одним движением — через меню Данные — Группа и структура — Создать структуру (Data — Group and Outline — Create Outline). К сожалению, подобная функция работает весьма непредсказуемо и на сложных таблицах порой делает совершенную ерунду. Но попробовать можно.
В Excel 2007 и новее все эти радости находятся на вкладке Данные (Data) в группе Структура (Outline):
Способ 3. Скрытие помеченных строк/столбцов макросом
Этот способ, пожалуй, можно назвать самым универсальным. Добавим пустую строку и пустой столбец в начало нашего листа и отметим любым значком те строки и столбцы, которые мы хотим скрывать:
Теперь откроем редактор Visual Basic (ALT+F11), вставим в нашу книгу новый пустой модуль (меню Insert — Module) и скопируем туда текст двух простых макросов:
Sub Hide()
Dim cell As Range
Application.ScreenUpdating = False 'отключаем обновление экрана для ускорения
For Each cell In ActiveSheet.UsedRange.Rows(1).Cells 'проходим по всем ячейкам первой строки
If cell.Value = "x" Then cell.EntireColumn.Hidden = True 'если в ячейке x - скрываем столбец
Next
For Each cell In ActiveSheet.UsedRange.Columns(1).Cells 'проходим по всем ячейкам первого столбца
If cell.Value = "x" Then cell.EntireRow.Hidden = True 'если в ячейке x - скрываем строку
Next
Application.ScreenUpdating = True
End Sub
Sub Show()
Columns.Hidden = False 'отменяем все скрытия строк и столбцов
Rows.Hidden = False
End Sub
Как легко догадаться, макрос Hide скрывает, а макрос Show — отображает обратно помеченные строки и столбцы. При желании, макросам можно назначить горячие клавиши (Alt+F8 и кнопка Параметры), либо создать прямо на листе кнопки для их запуска с вкладки Разработчик — Вставить — Кнопка (Developer — Insert — Button).
Способ 4. Скрытие строк/столбцов с заданным цветом
Допустим, что в приведенном выше примере мы, наоборот, хотим скрыть итоги, т.е. фиолетовые и черные строки и желтые и зеленые столбцы. Тогда наш предыдущий макрос придется немного видоизменить, добавив вместо проверки на наличие «х» проверку на совпадение цвета заливки с произвольно выбранными ячейками-образцами:
Sub HideByColor()
Dim cell As Range
Application.ScreenUpdating = False
For Each cell In ActiveSheet.UsedRange.Rows(2).Cells
If cell.Interior.Color = Range("F2").Interior.Color Then cell.EntireColumn.Hidden = True
If cell.Interior.Color = Range("K2").Interior.Color Then cell.EntireColumn.Hidden = True
Next
For Each cell In ActiveSheet.UsedRange.Columns(2).Cells
If cell.Interior.Color = Range("D6").Interior.Color Then cell.EntireRow.Hidden = True
If cell.Interior.Color = Range("B11").Interior.Color Then cell.EntireRow.Hidden = True
Next
Application.ScreenUpdating = True
End Sub
Однако надо не забывать про один нюанс: этот макрос работает только в том случае, если ячейки исходной таблицы заливались цветом вручную, а не с помощью условного форматирования (это ограничение свойства Interior.Color). Так, например, если вы с помощью условного форматирования автоматически подсветили в своей таблице все сделки, где количество меньше 10:
…и хотите их скрывать одним движением, то предыдущий макрос придется «допилить». Если у вас Excel 2010-2013, то можно выкрутиться, используя вместо свойства Interior свойство DisplayFormat.Interior, которое выдает цвет ячейки вне зависимости от способа, которым он был задан. Макрос для скрытия синих строк тогда может выглядеть так:
Sub HideByConditionalFormattingColor()
Dim cell As Range
Application.ScreenUpdating = False
For Each cell In ActiveSheet.UsedRange.Columns(1).Cells
If cell.DisplayFormat.Interior.Color = Range("G2").DisplayFormat.Interior.Color Then cell.EntireRow.Hidden = True
Next
Application.ScreenUpdating = True
End Sub
Ячейка G2 берется в качестве образца для сравнения цвета. К сожалению, свойство DisplayFormat появилось в Excel только начиная с 2010 версии, поэтому если у вас Excel 2007 или старше, то придется придумывать другие способы.
Ссылки по теме
- Что такое макрос, куда вставлять код макроса, как их использовать
- Автоматическая группировка в многоуровневых списках
Довольно часто появляется необходимость в Excel скрывать или отображать строки или столбцы. Особенно это актуально, когда на листе размещается очень много информации и часть из них является вспомогательной и требуется не всегда и тем самым загромождает пространство, ухудшая восприятие. Если это приходится делать часто, то делать это с помощью меню неудобно, особенно если приходится скрывать и отображать разные столбцы и строки.
Для существенного удобства можно написать простенький макрос, привязав его к кнопке и делать это одним щелком мыши.
Вот так выглядят простые примеры, с помощью которых Вы без труда сможете скрывать или отображать строки и столбцы с помощью VBA
Пример 1: Скрыть строку 2 в Excel
Sub HideString() ‘Это название макроса
Rows(2).Hidden = True
End Sub
Пример 2: Скрыть несколько строк в Excel (строку 3-5)
Sub HideStrings()
Rows(«3:5»).Hidden = True
End Sub
Пример 3: Скрыть столбец 2 в Excel
Sub HideCollumn()
Columns(2).Hidden = True
End Sub
Пример 4: Скрытие нескольких столбцов в Excel
Sub HideCollumns()
Columns(«E:F»).Hidden = True
End Sub
Пример 5: Скрытие строки по имени ячейки в Excel
Sub HideCell()
Range(«Возможности Excel»).EntireRow.Hidden = True
End Sub
Пример 6: Скрытие нескольких строк по адресам ячеек
Sub HideCell()
Range(«B3:D4»).EntireRow.Hidden = True
End Sub
Пример 7: Скрытие столбца по имени ячейки
Sub HideCell()
Range(«Возможности Excel»).EntireColumn.Hidden = True
End Sub
Пример 8: Скрытие нескольких столбцов по адресам ячеек
Sub HideCell()
Range(«C2:D5»).EntireColumn.Hidden = True
End Sub
Как видите процесс автоматического скрытия строк и столбцов очень прост, а применений данному приему огромное множество.
Для того, чтобы отобразить строки и столбцы в Excel вы можете воспользоваться этими же макросами, но вместе True необходимо указать False
Например, макрос для того, чтобы отобразить строку 2 будет выглядеть следующим образом:
Sub ViewString()
Rows(2).Hidden = False
End Sub
Надеемся, что данная статья была полезна вам и ответила на вопрос: как скрыть или отобразить строки и столбцы в Excel с помощью VBA
Спасибо за внимание.
Как скрыть или отобразить строки и столбцы с помощью свойства Range.Hidden из кода VBA Excel? Примеры скрытия и отображения строк и столбцов.
Range.Hidden — это свойство, которое задает или возвращает логическое значение, указывающее на то, скрыты строки (столбцы) или нет.
Синтаксис
Expression — выражение (переменная), возвращающее объект Range.
- True — диапазон строк или столбцов скрыт;
- False — диапазон строк или столбцов не скрыт.
Примечание
Указанный диапазон (Expression) должен охватывать весь столбец или строку. Это условие распространяется и на группы столбцов и строк.
Свойство Range.Hidden предназначено для чтения и записи.
Примеры кода с Range.Hidden
Пример 1
Варианты скрытия и отображения третьей, пятой и седьмой строк с помощью свойства Range.Hidden:
|
Sub Primer1() ‘Скрытие 3 строки Rows(3).Hidden = True ‘Скрытие 5 строки Range(«D5»).EntireRow.Hidden = True ‘Скрытие 7 строки Cells(7, 250).EntireRow.Hidden = True MsgBox «3, 5 и 7 строки скрыты» ‘Отображение 3 строки Range(«L3»).EntireRow.Hidden = False ‘Скрытие 5 строки Cells(5, 250).EntireRow.Hidden = False ‘Скрытие 7 строки Rows(7).Hidden = False MsgBox «3, 5 и 7 строки отображены» End Sub |
Пример 2
Варианты скрытия и отображения третьего, пятого и седьмого столбцов из кода VBA Excel:
|
Sub Primer2() ‘Скрытие 3 столбца Columns(3).Hidden = True ‘Скрытие 5 столбца Range(«E2»).EntireColumn.Hidden = True ‘Скрытие 7 столбца Cells(25, 7).EntireColumn.Hidden = True MsgBox «3, 5 и 7 столбцы скрыты» ‘Отображение 3 столбца Range(«C10»).EntireColumn.Hidden = False ‘Отображение 5 столбца Cells(125, 5).EntireColumn.Hidden = False ‘Отображение 7 столбца Columns(«G»).Hidden = False MsgBox «3, 5 и 7 столбцы отображены» End Sub |
Пример 3
Варианты скрытия и отображения сразу нескольких строк с помощью свойства Range.Hidden:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Primer3() ‘Скрытие одновременно 2, 3 и 4 строк Rows(«2:4»).Hidden = True MsgBox «2, 3 и 4 строки скрыты» ‘Скрытие одновременно 6, 7 и 8 строк Range(«C6:D8»).EntireRow.Hidden = True MsgBox «6, 7 и 8 строки скрыты» ‘Отображение 2, 3 и 4 строк Range(«D2:F4»).EntireRow.Hidden = False MsgBox «2, 3 и 4 строки отображены» ‘Отображение 6, 7 и 8 строк Rows(«6:8»).Hidden = False MsgBox «6, 7 и 8 строки отображены» End Sub |
Пример 4
Варианты скрытия и отображения сразу нескольких столбцов из кода VBA Excel:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Primer4() ‘Скрытие одновременно 2, 3 и 4 столбцов Columns(«B:D»).Hidden = True MsgBox «2, 3 и 4 столбцы скрыты» ‘Скрытие одновременно 6, 7 и 8 столбцов Range(«F3:H40»).EntireColumn.Hidden = True MsgBox «6, 7 и 8 столбцы скрыты» ‘Отображение 2, 3 и 4 столбцов Range(«B6:D6»).EntireColumn.Hidden = False MsgBox «2, 3 и 4 столбцы отображены» ‘Отображение 6, 7 и 8 столбцов Columns(«F:H»).Hidden = False MsgBox «6, 7 и 8 столбцы отображены» End Sub |
|
Добавление в таблицу кнопки скрытияотображения столбцов |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
- Excel VBA Скрыть столбцы
Excel VBA Скрыть столбцы
Скрытие и отображение столбцов в Excel — самая простая задача. И автоматизировать этот процесс даже легко. VBA Hide Column не требует огромного кода для написания. Но прежде чем мы начнем писать код для скрытия столбца в VBA, нам нужно понять несколько вещей и требований. Нам нужно знать имя столбца или последовательность, которую мы хотим скрыть, и диапазон ячейки, которая является необязательной.
Как скрыть столбцы в Excel VBA?
Мы научимся скрывать столбец в VBA с помощью нескольких примеров в Excel.
Вы можете скачать этот шаблон Excel VBA Hide Columns здесь — VBA Скрыть шаблон Excel Columns
Excel VBA Hide Column — Пример № 1
Для этого нам нужны данные в виде нескольких заполненных столбцов. Здесь у нас есть набор данных, в котором мы случайным образом взяли числа от 1 до 40 в разных 4 столбцах A, B, C и D соответственно, и все столбцы окрашены в разные цвета только для лучшего отображения на веб-странице.
Предположим, если мы хотим скрыть столбцы A и B, то сначала нам нужно выбрать оба столбца, как показано ниже.
Теперь щелкните правой кнопкой мыши и выберите « Скрыть», как показано ниже.
Выбранные столбцы будут скрыты после этого. Мы могли видеть только столбцы C и D с данными.
Теперь, если подобная работа может быть выполнена и макросом VBA. Для этого нам понадобится модуль. Перейдите в VBA и выберите модуль из списка меню «Вставка», как показано ниже.
В открывшемся модуле напишите подкатегорию VBA Hide Column, или мы можем выбрать любое другое имя в соответствии с нашим выбором, как показано ниже.
Код:
Sub Hide_Column () End Sub
Сначала выберите столбцы, которые нам нужно скрыть. Здесь мы скрываем столбец C.
Код:
Sub Hide_Column () Range ("C: C") End Sub
Поскольку мы хотим скрыть весь столбец C, выберите функцию FullColumn, а затем Hidden, как показано ниже.
Код:
Sub Hide_Column () Range ("C: C"). ВесьColumn.Hidden End Sub
Теперь, чтобы это произошло, мы можем выбрать ответ ИСТИНА или ЛОЖЬ. Если мы выберем Hidden как TRUE, тогда это будет скрывающая функция или если FALSE, тогда она будет работать как скрывающая функция. Поскольку мы хотим скрыть выбранные столбцы C из диапазона, мы бы выбрали здесь TRUE.
Код:
Sub Hide_Column () Range ("C: C"). FullColumn.Hidden = True End Sub
Теперь скомпилируйте код и запустите его, нажав кнопку Play, расположенную под строкой меню в VBA. Мы увидим, что столбец C теперь скрыт, теперь он показывает только столбцы A, B и D.
Если мы хотим скрыть более одного столбца вместе. Затем в диапазоне нам нужно выбрать эти столбцы, как показано ниже. Здесь мы выбираем столбцы B и C.
Код:
Sub Hide_Column () Range ("B: C"). FullColumn.Hidden = True End Sub
Теперь снова запустите код.
Здесь мы видим, столбцы B и C теперь скрыты. И только столбцы A и D видны.
Excel VBA Hide Column — Пример № 2
Вместо того, чтобы выбирать столбцы путем упоминания имени, мы также можем скрыть любой столбец по их последовательности. Во многих случаях этот процесс не является предпочтительным, поскольку мы можем легко узнать имя столбца, в котором находится столбец в алфавитном порядке. Этот процесс похож на код, который мы видели в примере № 1, где мы выбрали имя столбца как B и B: C, мы выберем порядковый номер, в котором расположен столбец. Если предположить, что мы хотим скрыть столбец A, используя код примера-1, нам просто нужно поместить порядковый номер, а не выбирать его с помощью Range.
Код:
Sub Hide_Column2 () Columns (1) .EntireColumn.Hidden = True End Sub
Теперь запустите этот код, нажав клавишу F5 или нажав кнопку Play. Мы увидим, столбец А, который находится на первой позиции, теперь скрыт.
Excel VBA Hide Column — Пример № 3
Есть еще один способ скрыть столбец, используя код VBA. Это также просто, как код, который мы видели в примере № 1. Для этого мы снова будем использовать те же данные, которые мы использовали в приведенном выше примере. Запишите подкатегорию под любым именем или именем выполняемой функции.
Код:
Sub Hide_Column3 () End Sub
Выберите любой диапазон столбца, который нам нужно скрыть. Здесь мы выбираем тот же столбец C.
Код:
Sub Hide_Column3 () Range ("C: C") End Sub
Чтобы активировать выбор необходимого столбца, выберите функцию « Столбцы», как показано ниже.
Код:
Sub Hide_Column3 () Range ("C: C"). Столбцы End Sub
Затем используйте скрытую команду, чтобы активировать функцию скрытия и отображения в VBA.
Код:
Sub Hide_Column3 () Range ("C: C"). Columns.Hidden End Sub
И выберите ИСТИНА, чтобы скрыть выбранный столбец, и ЛОЖЬ, чтобы скрыть выбранный скрытый столбец.
Код:
Sub Hide_Column3 () Range ("C: C"). Columns.Hidden = True End Sub
Столбец C, который был нашим столбцом диапазона, теперь скрыт.
Excel VBA Hide Column — Пример № 4
Есть еще один простой способ автоматизировать процесс скрытия столбцов в VBA. Для этого снова напишите подкатегорию в имени VBA Hide Columns.
Код:
Sub Hide_Column4 () End Sub
Прямо выберите столбец, который нам нужно скрыть. Здесь снова мы выбираем тот же столбец C.
Код:
Sub Hide_Column4 () Столбцы ("C") End Sub
И выберите скрытую команду как ИСТИНА, чтобы активировать процесс скрытия. Или выберите ЛОЖЬ, чтобы активировать процесс отображения.
Код:
Sub Hide_Column4 () Столбцы ("C"). Hidden = True End Sub
Посмотрим, колонка С снова скрыта.
Плюсы и минусы Excel VBA Скрыть столбец
- Процесс VBA Hide Column очень прост в реализации.
- Мы можем скрыть любой тип столбца Range, будь то в последовательности или в случайных позициях.
- Поскольку процесс VBA Hide Column прост в применении, но в ручном режиме, он также прост, как в коде VBA. Таким образом, это не вносит большой вклад в экономию. Настоятельно рекомендуется только тогда, когда мы работаем над написанием огромного кода.
То, что нужно запомнить
- Мы скрываем и отображаем столбец с помощью некоторого кода VBA. Для отображения, используйте FALSE вместо TRUE для функциональной цели.
- Порядковый номер столбца также позволяет скрыть столбец, кроме выбора имени столбца, которое упоминается в алфавитном порядке.
Рекомендуемые статьи
Это руководство к VBA Hide Columns. Здесь мы обсудим, как скрыть столбцы в Excel, используя код VBA, а также приведем практические примеры и загружаемый шаблон Excel. Вы также можете просмотреть наши другие предлагаемые статьи —
- Рабочие листы в Excel VBA
- Группировка столбцов в Excel (примеры)
- Как создать пользовательскую форму в Excel VBA?
- Как переместить столбцы в Excel?
Чего хотел то?
Хотел написать довольно узкую статью про то, как автоматизировать скрытие ненужных и открытие, вдруг ставших нужными, строк/столбцов на листе Excel. Однако статья получилась несколько шире. Excel особенно хорошо демонстрирует свою силу, когда вы соединяете вместе несколько стандартных инструментов. Вот и я, придумывая пример, не удержался от этого «синтеза» и невольно пришлось выйти за ранее намеченные рамки статьи. Впрочем, я даже рад этому, так как вы только тогда расправите крылья в Excel, когда научитесь комбинировать свои отдельные навыки, как это показано в этой статье.
Синтез
Каждый приём, примененный в этом учебном примере, — банальщина, а сведенные воедино — уже некая магия. Какие же приёмы мы объединили:
-
Формулы
-
Форматы данных
-
Условное форматирование
-
Макрос
-
Элементы управления
Суть учебного примера
Будем формировать вот такой прямоугольник из звёздочек в рамке. Высотой и шириной которого, можно управлять при помощи двух счётчиков слева.
Скачать пример
Разбор решения по шагам:
-
Смотрим лист Шаг 1. Рисуем жирную рамку вокруг диапазона D2:AY23. Зона для построения прямоугольника — E3:AX22.
-
В ячейке A1 будем хранить ширину прямоугольника, который нам надо будет нарисовать звёздочками. В ячейке A2 — высоту.
-
На пересечении строки 25 и столбца BA намечаем единичками наш будущий пояс видимости. Что это такое, расскажу позже.
-
Создаём 2 именованных диапазона для A1 и A2 с названиями Ширина и Высота соответственно.
-
В ячейку E3 вводим формулу
=ЕСЛИ(И(СТОЛБЕЦ()<=Ширина;СТРОКА()<=Высота);1;0) или
=IF(AND(COLUMN()<=Ширина;ROW()<=Высота);1;0),
распространяем на весь диапазон E3:AX22. -
Смотрим лист Шаг 2. Меняем формат данных диапазона E3:AX22 на «;;;«. Так же поступаем с A1:A2. Этот пустой формат данных очень удобен тогда, когда наши ячейки содержат служебную вспомогательную информацию и мы не хотим визуализации на листе их значений.
-
Через ленту РАЗРАБОТЧИК при включенном Режиме конструктора, через кнопку Вставить, добавляем 2 элемента управления типа Счётчик. Изменяем их как показано на экранах. Данные счётчики будут использованы для изменения значения диапазонов Ширина и Высота.
-
Теперь разберемся с поясом видимости. Этот пояс будет обрабатываться макросом, который в чётком соответствии с ним будет скрывать или показывать соответствующие строки или столбцы. Например, если в F25 будет 1, то столбец F будет видимым, а если 0, то макрос скроет этот столбец. Соответственно, если BA5 будет содержать 1, то строка 5 будет видима, а если 0, то будет скрыта. Ячейка BA25 будет отвечать за видимость и строки 25, и столбца BA одновременно.
В ячейки, чьи столбцы/строки, всегда должны быть видимыми (например A25:D25, которые отвечают за столбцы A:D) можно ввести просто единички. А вот в ячейки, которые должны управлять видимостью в динамике, мы введём формулы. E25, например, будет содержать =ЕСЛИ(ИЛИ(СУММ(E3:E22)>0;Видимость);1;0) или =IF(OR(SUM(E3:E22)>0;Видимость);1;0). Для нашего удобства я ввёл ещё один именованный диапазон Видимость, который располагается на листе Настройки и позволяет для наших нужд сделать все строки/столбцы видимыми, что может потребоваться вам для внесения изменений на листе (в противном случае вам пришлось бы делать видимыми столбцы и строки вручную, что довольно неудобно). Если Видимость истинна, то все наши сигнальные ячейки пояса верности видимости становятся равными всегда 1, вне зависимости от значений ячеек диапазона E3:AX22. В этом виновата формула ИЛИ (OR), которая возвращает ИСТИНА, если хотя бы 1 из её авгументов принял значение ИСТИНА.
-
Займёмся рисованием звёздочек на месте единичек в диапазоне E3:AX22. Создадим правило условного форматирования, как показано на экранах.
-
Ну и сделаем простой макрос, который будет сканировать пояс видимости и если текущая видимость столбца/строки не соответствует поясу, то он приводит это в соответствие, то есть либо скрывает, либо показывает строку/столбец.
-
Макрос, оформленный в виде процедуры ShowHide, будем вызывать из событий изменения счётчиков
а также события активации листа
Сводим всё воедино
Итак, на итоговом листе Шаг 3 все компоненты собраны воедино. Элементы управления счётчики настроены на изменение именованных диапазонов Ширина и Высота, которые через формулы влияют на появление единичек в диапазоне E3:AX22. На эти единички реагирует условное форматирование, рисуя на их месте звёздочки, и на них же реагируют ячейки пояса видимости, принимая значения 1 для тех столбцов/строк, которые должны быть видимыми, и 0 — для тех, что должны быть скрыты. Макрос, который скрывает/показывает строки и столбцы вызывается из события изменения счётчика и события активации листа.
Вывод
Я надеюсь, что не смотря на искусcтвенность примера, вы усвоили несколько важных приёмов, которые помогут вашим таблицам выглядеть более эффектно.
Читайте также:
-
Работа с объектом Range
-
Поиск границ текущей области
-
Массивы в VBA
-
Структуры данных и их эффективность
На чтение 4 мин. Просмотров 224 Опубликовано 24.02.2021
У меня есть рабочий лист со значениями в столбцах B: G. На том же листе в ячейке A1 я создал раскрывающийся список, используя проверку данных со значениями, такими как A, B и C.
Мне нужно, когда я выбираю значение ячейки A, а затем столбцы B: C должны быть видимыми, а другие столбцы должны быть скрыты от D: G. Таким же образом, если я выберу B из списка, мне нужно просмотреть столбцы D: E и B: C и F: G, которые должны быть скрыты.
Не могли бы вы помочь мне в этом.
Примечание. Я плохо разбираюсь в VBA.
Попробуйте следующее:
- Откройте редактор VBA (
ALT + F11). - Дважды щелкните
Sheet1 - Выберите
Рабочий листв верхнем левом раскрывающемся списке иИзменитьв верхнем правом раскрывающемся списке - Вставьте этот код
NB – это предполагает, что проверка данных находится в ячейке A1
Private Sub Worksheet_Change (ByVal Target As Range) Уменьшить все столбцы как диапазон Установить allColumns = Columns ("B: G") allColumns.Hidden = True, если не пересекаются (Target, Range ("A1")) Ничего, то если Target.Value = "A", то столбцы ("B: C "). Hidden = False ElseIf Target.Value =" B "Then Columns (" D: E "). Hidden = False ElseIf Target.Value =" C "Then//Добавьте сюда дополнительную логику End If End IfEnd Sub код>
Перейти к просмотру -> макросы.
Нажмите раскрывающийся список и сделайте «запись нового макроса». Щелкните правой кнопкой мыши заголовок столбца и выполните скрыть столбец.
Затем отобразить столбец. Выполнить макросы-> остановить запись. Макросы -> Просмотреть макросы Нажмите кнопку редактирования.
вы получите следующий код:
Столбцы ("C: C"). SelectSelection.EntireColumn.Hidden = TrueSelection.EntireColumn.Hidden = False
Теперь вы знаете, как скрыть и показать столбцы. Сначала вы выбираете столбец, затем устанавливаете Hidden = true или false.
Google: макрос Excel при изменении значения ячейки
Щелкните первую ссылку: http://support .microsoft.com/kb/213612
Возьмите код из этой ссылки и прочтите комментарии:
Private Sub Worksheet_Change (ByVal Target As Range ) Dim KeyCells As Range 'Переменная KeyCells содержит ячейки, которые будут вызывать предупреждение при их изменении. Установите KeyCells = Range ("A1: C10") If Not Application.Intersect (KeyCells, Range (Target.Address)) _ Is Nothing Then "Отображать сообщение, когда одна из назначенных ячеек была изменена". 'Разместите здесь свой код. MsgBox «Ячейка» & Target.Address & «изменилась». End IfEnd Sub
Убедитесь, что вы внимательно прочитали ссылку. И следуйте инструкциям. Иногда я тороплюсь и упускаю важные детали.
Дайте мне знать, достаточно ли этого или вам нужна дополнительная помощь.
ответил 24 мая ’14 в 11:44
-
Дерек, Спасибо за ответ. Скоро подтвердим статус – user3671568, 24 мая 2014, 17:59
добавить комментарий |
Перейти к просмотру -> макросы.
Нажмите раскрывающийся список и сделайте «запись нового макроса». Щелкните правой кнопкой мыши заголовок столбца и скрыть столбец.
Затем отобразите столбец. Сделайте макросы-> остановите запись. Макросы -> Просмотреть макросы Нажмите кнопку редактирования.
вы получите следующий код:
Столбцы ("C: C"). SelectSelection.EntireColumn.Hidden = TrueSelection.EntireColumn.Hidden = False
Теперь вы знаете, как чтобы скрыть и показать столбцы. Сначала вы выбираете столбец, затем устанавливаете Hidden = true или false.
Google: макрос Excel при изменении значения ячейки
Щелкните первую ссылку: http://support .microsoft.com/kb/213612
Возьмите код из этой ссылки и прочтите комментарии:
Private Sub Worksheet_Change (ByVal Target As Range ) Dim KeyCells As Range 'Переменная KeyCells содержит ячейки, которые будут вызывать предупреждение при их изменении. Установите KeyCells = Range ("A1: C10") If Not Application.Intersect (KeyCells, Range (Target.Address)) _ Is Nothing Then "Отображать сообщение, когда одна из назначенных ячеек была изменена". 'Разместите здесь свой код. MsgBox «Ячейка» & Target.Address & «изменилась». End IfEnd Sub
Убедитесь, что вы внимательно прочитали ссылку. И следуйте инструкциям. Иногда я тороплюсь и упускаю важные детали.
Дайте мне знать, достаточно ли этого или вам нужна дополнительная помощь.
Содержание
- Скрыть столбцы с помощью VBA в Excel
- Скрыть один или несколько столбцов на листе
- Скрытие столбцов в диапазоне
- Сделать столбец xlVeryHidden
Скрыть столбцы с помощью VBA в Excel
Скрыть один или несколько столбцов на листе
Скрыть столбец очень просто. Код ниже скрывает столбец C на активном листе. Если установить для свойства Hidden значение False , столбец снова станет видимым.
Columns ("D ") .Hidden = True
Код ниже скрывает несколько столбцов (D. E и F).
Columns (" D : F "). Hidden = True
Скрытие столбцов в диапазоне
При запуске с диапазона, который не является полным столбцом, вы получите ошибку времени выполнения« 1004 »: невозможно установить свойство Hidden класса Range.
Dim rng As Range: Set rng = Application.Range ("B2") rng.Hidden = True
Вы можете исправить это, применив весь столбец к диапазону:
Dim rng As Range: Установить rng = Application.Range ("B2") rng.EntireColumn. Hidden = True
xlVeryHidden не поддерживается для столбцов. Обходной путь – скрыть его, а затем защитить лист.
Пустые столбцы в таблицах Excel, также как и пустые строки, занимают полезное место как на экране монитора, так и на листе бумаги, при этом не несут смысловой нагрузки и мешают восприятию информации. Удалить такие столбцы не всегда представляется возможным, так как ячейки, находящиеся в столбцах могут участвовать в расчетах. При удалении на результат расчетов они конечно же не повлияют, но к появлению неправильных ссылок на ячейки привести очень даже могут. В таких случаях пустые столбцы можно просто скрыть и сделать это можно очень быстро.
Как скрыть пустые столбцы средствами Excel?
Скрыть столбцы вручную
Простейший способ заключается в том, чтобы зрительно отыскать пустые столбцы и выделить их. При этом можно выделять несколько не смежных столбцов, удерживая клавишу Ctrl на клавиатуре. После того как столбцы выделены, необходимо навести курсор на выделенное поле, кликнуть по нему правой кнопкой мыши и выбрать пункт «Скрыть» из контекстного меню. Выделенные столбцы будут скрыты. Способ простой, но можно пропустить какой-нибудь столбец или наоборот можно ошибочно выделить и скрыть столбец со значениями.
Скрыть столбцы используя сортировку
Если пустых столбцов много и искать их зрительно проблематично, то можно использовать сортировку для того чтобы сгруппировать и после этого скрыть их, выделив сразу весь диапазон либо просто вывести за пределы печати. Минусом такого способа является то, что очередность столбцов изменяется.
Программное скрытие макросом VBA
Пустые столбцы в Excel можно скрыть и средствами VBA. При этом не нужно тратить время и усилия на поиски пустых столбцов, процедура, написанная на Visual Basic for Applications все это сделает за Вас. Ниже приведен листинг процедуры, скрывающей пустые столбцы в используемом диапазоне активного рабочего листа. Напомню, что используемым называется диапазон, начинающийся первой заполненной и заканчивающийся последней заполненной ячейкой.
Sub Skryt_Pustye_Stolbtsy()
Dim c As Long, FirstColumn As Long, LastColumn As Long
FirstColumn = ActiveSheet.UsedRange.Column
LastColumn = ActiveSheet.UsedRange.Columns.Count - 1 + ActiveSheet.UsedRange.Column
For c = LastColumn To FirstColumn Step -1
If Application.CountA(Columns(c)) = 0 Then
Columns(c).Hidden = True
End If
Next c
End Sub
Для того, чтобы перенести этот программный код на свой компьютер, наведите курсор мыши на поле с программным кодом , нажмите на одну из двух кнопкок в правом верхнем углу этого поля, скопируйте программный код и вставьте его в модуль проекта на своем компьютере (подробнее о том, как сохранить программный код макроса).
Автоматическое скрытие с использованием надстройки
Более функциональным средством VBA является надстройка, позволяющая удалять и скрывать не только пустые столбцы, но и столбцы, отвечающие условиям пользователя, которые можно задавать в диалоговом окне.
Пользователь на свой выбор может удалять либо скрывать пустые столбцы. Может удалять либо скрывать столбцы, содержащие либо не содержащие заданный текст, при этом на свой выбор учитывать либо не учитывать регистр. Возможен одновременный поиск сразу нескольких текстовых выражений, разделенных знаком ; (точка с запятой). Пользователь также может на свое усмотрение расширять область действия макроса и ограничивать его, задавая номера первого и последнего столбца. Кроме того, надстройка освобождает пользователя от поиска нужного макроса, так как позволяет вызывать диалоговое окно прямо из панели инструментов Excel.
И еще одна надстройка, для скрытия и удаления строк и столбцов, в зависимости от значений ячеек и заданных условий. Работает более гибко, но несколько медленнее, чем первая, так как проверяет не столбцы, а ячейки. Позволяет удалять не только строки и столбцы, но и ячейки с заданными значениями и с заданным сдвигом.










































