Vba Excel скрыть столбец

Обновлено: 21.11.2024

Возможно, нам потребуется скрыть столбцы в Excel для некоторых типов требований. Например, у нас могут быть данные для 3 разных категорий, и мы хотим показать их на основе выбора пользователя. Мы можем добиться этого, скрыв или открыв столбцы в Excel. Мы увидим это в следующих примерах…

Скрыть нескрываемые столбцы на листе Excel с помощью VBA — решение

Мы можем использовать свойство EntireColumn.Hidden столбца. Вы можете установить для свойства значение TRUE, если хотите скрыть столбцы, или FALSE, если хотите отобразить столбцы.

Скрытие и отображение столбцов на листе Excel с помощью VBA — пример

В следующем примере показано, как скрыть и показать столбцы в Excel с помощью VBA. В этом примере я скрываю столбцы B, C и D, устанавливая для свойства Hidden значение TRUE. А затем отключите скрытие, установив Hidden=FALSE.

Инструкции:
  1. Открыть книгу Excel
  2. Введите некоторые данные в диапазоне от A1 до F5.
  3. Нажмите клавиши ALT + F11, чтобы открыть редактор VBA.
  4. Вставить модуль для меню "Вставка"
  5. Скопируйте приведенный выше код и вставьте его в окно кода.
  6. Сохранить файл как книгу с поддержкой макросов
  7. Нажмите F5, чтобы запустить его.
Ввод:

Загрузите файл примера, доступный в конце темы, и выполните макросы.

Вывод:

Вот пример скриншота файла примера.

Скрыть-показать столбцы на листе Excel с помощью VBA — пример из практики

Вот пример. Вы можете скачать файл ниже и посмотреть, как он работает. Вы можете нажать на кнопки, чтобы просмотреть соответствующие данные.

Скрыть-показать столбцы на листе Excel с помощью VBA — скачать пример файла

Вы можете скачать файл примера и посмотреть код каждой кнопки.
ANALYSISTABS — скрытие и отображение столбцов

Скрыть столбцы на основе условия на листе Excel с помощью VBA

Мы можем скрыть столбцы при определенных условиях. Приведенный ниже макрос просматривает первые 25 столбцов и проверяет, равно ли значение в строке 1 0, а затем скрывает его.

Пример 1

Пример макроса, чтобы проверить, равна ли строка 1 столбца 0, и скрыть:

Пример 2

Пример макроса, чтобы проверить, является ли строка 1 столбца 0 или пустой, и скрыть:


Sub hideColumnsBasedOnConditionZeroBlank()
LastColumn = 25 'Последний столбец
For i = 1 To LastColumn 'Перебор каждого столбца
'Скрыть все столбцы со значениями 0 в строке 1
Если ячейки (1, i) = 0 или ячейки (1, i) = «», тогда столбцы (i).EntireColumn.Hidden = True

Мощные и многоцелевые шаблоны для управления проектами. Теперь легко управляйте своими проектами, задачами, встречами, презентациями, командами, клиентами, заинтересованными сторонами и временем. На этой странице описаны все удивительные новые функции и возможности наших премиальных шаблонов.

Во всем свойстве столбца нам нужно использовать свойство «Скрытый».

Затем, наконец, нам нужно установить для свойства Hidden значение TRUE.

Это скроет столбец A.

Как скрыть столбцы в VBA?

Если вы хотите скрыть определенный столбец, укажите столбец внутри объекта RANGE. Посмотрите на данные ниже.

Теперь мы скроем весь столбец A, используя следующий код.

Код:

Поэтому, когда мы запустим код, мы получим следующий результат.

Если вы хотите скрыть столбец с помощью свойства Columns, код ниже для вас.

Код:

Это скроет столбец B.Здесь вы, должно быть, думаете, где находится свойство Весь столбец. При использовании свойства Columns нет необходимости использовать свойство Entire Column.

Мы по-прежнему можем использовать свойство «Весь столбец», но это не обязательно. Код для него приведен ниже.

Код:

Это тоже должно работать нормально.

Мы также можем использовать номер столбца вместо алфавитной ссылки. Код для него приведен ниже.

Код:

Это скроет столбец D.

Код:

Это скроет столбцы от A до C.

Мы также можем использовать следующий код, чтобы скрыть несколько столбцов в Excel VBA.

Код:

Приведенные выше методы скроют первые три столбца, т. е. A, B и C.

Код:

Это скроет весь столбец A.

Предположим, что у вас есть данные, как показано на рисунке ниже.

Нам нужно скрыть все альтернативные столбцы, которые пусты. Нам нужно использовать циклы; приведенный ниже код сделает всю работу за нас.

Код:

Это скроет все альтернативные столбцы.

В предыдущем примере все остальные альтернативные столбцы были пустыми; мы спрятались легко. Но посмотрите на данные ниже.

Здесь шаблон пустых столбцов не является стандартным. В этих случаях приведенный ниже код скроет все пустые столбцы. Неважно, какой это узор.

Код:

Когда вы запустите код, вы получите следующий результат.

Теперь мы увидим, как скрыть столбцы на основе значения ячейки. Например, посмотрите на данные ниже.

Здесь я хочу скрыть все столбцы, если заголовок «Нет». Код ниже сделает это за меня.

Код:

Когда вы запустите код, вы получите следующий результат.

Рекомендуемые статьи

Это руководство по скрытию столбцов VBA. Здесь мы обсуждаем, как скрыть столбцы в VBA Excel, а также практические примеры и загружаемый лист Excel. Вы можете узнать больше о VBA из следующих статей —

В электронных таблицах может храниться много информации, которую пользователям не нужно видеть, например вспомогательные столбцы. Часто лучше автоматически скрыть эту информацию, чтобы пользователи случайно не внесли какие-либо изменения.Это также может облегчить понимание информации, если столбцы скрыты, особенно если есть несколько промежуточных столбцов между столбцами, которые может изменить пользователь, и окончательными столбцами вывода.

Скрывать и отображать столбцы в VBA очень просто, поэтому в этом руководстве будет меньше подробностей, чем в некоторых других наших руководствах, таких как API или парсинг, которые требовали множества взаимозависимых частей.

Объект столбца и его скрытое свойство

В VBA объект "Столбец" обращается к определенному столбцу в объекте "Лист". Важно понимать, что объекты Column находятся на определенных листах. Выражение Columns(1) ссылается на разные столбцы на разных листах, так же как Range("A1") ссылается на разные ячейки на разных листах. Столбец А на листе Продажи явно отличается от столбца А на листе Клиенты.

Таким образом, при вызове объекта Column вы должны либо указать лист, либо ожидать, что будет использоваться текущий активный лист. Опять же, это ничем не отличается от работы с объектами VBA Range.

Свойство .Hidden

Каждый объект Column имеет свойство .Hidden, имеющее тип Boolean . Это свойство может быть только TRUE или FALSE. Обратите внимание, что это свойство, а не метод. Это означает, что вы должны установить его равным чему-то, что в данном случае будет True или False . Вы не вызываете .Hide(), чтобы сделать столбец скрытым. Точно так же вы также не вызываете .Unhide(), чтобы снова отобразить столбец.

Если мы задумаемся об этом на секунду, имеет смысл реализовать скрытность как свойство, а не как метод. Если столбец уже скрыт и мы вызываем для него Hide(), он ничего не сделает. Более того, не было бы возможности проверить, скрыт ли какой-либо конкретный столбец или нет. Мы могли бы только слепо скрывать и показывать столбцы.

Итак, чтобы скрыть столбец, просто установите для его свойства .Hidden значение True :

Если вы хотите использовать буквенное обозначение, вы можете сделать это с помощью кавычек:

Больше ничего нет. Как и следовало ожидать, установка свойства в False отобразит столбец. Если ваш номер столбца может измениться, вы можете найти функцию преобразования номера столбца в букву VBA, полезную для преобразования номеров столбцов в буквы.

Скрытие нескольких столбцов с помощью VBA

Скрытие нескольких столбцов требует другого подхода. Если вы следите за нашим сайтом, вы знаете, что объект Column относится к одному экземпляру, а множественные столбцы относятся к коллекции. Если вы не следите за нашими сообщениями, вам следует подумать об этом:

Создавайте мощные макросы с помощью нашего бесплатного комплекта разработчика VBA

Подобные уроки могут быть сложными. Вот почему мы создали наш бесплатный комплект разработчика VBA и нашу большую книгу макросов Excel VBA в дополнение к этому руководству. Возьмите их ниже, и вы сразу же сможете писать мощные макросы.

В VBA нет объекта Column, доступного программисту, но Columns(1) ссылается на один объект Column — первый — в коллекции Columns. Чтобы сослаться на несколько столбцов одновременно, вы должны сгруппировать их в диапазон:

Этот макрос скрывает столбцы 1, 2 и 3.

Если вы знаете букву, вы также можете скрыть столбцы A, B и C с кавычками вместо того, чтобы группировать их в диапазон:

Переключить скрытые столбцы

С помощью VBA легко проверить, скрыты ли столбцы, это управляется свойством объекта Column. Поскольку это свойство логическое, вы можете переключать его с помощью модификатора Not. Для пользователя очевидно, скрыты столбцы или нет, и они захотят скрыть/показать одну кнопку, а не две кнопки (одну, чтобы скрыть, и отдельную, чтобы показать).

Сравните эти два способа переключения скрытых столбцов, которые, возможно, связаны с кнопкой, которую может нажать пользователь. Один использует Not для переключения, а другой усложняет проблему операторами if:

Оба макроса работают, но второй намного чище. Если вы учитесь программировать, я рекомендую попробовать использовать логику, как во втором макросе, а не перебирать ее с помощью явных операторов If (т. е. проверять возможные условия и действовать соответственно). Короткий элегантный код делает макрос более понятным и читабельным. В приведенном выше примере нет проблем с кодом, но когда у вас есть тысячи строк кода, чрезмерное явное и тестирование случаев может привести к раздуванию.

Конечно, будьте благоразумны. Если ваш код становится запутанным из-за вашей загадочной логики, может быть лучше сделать код более подробным или, по крайней мере, использовать комментарии (комментарии VBA объявляются с помощью апострофа ' .). Никто не хочет искать a и b в этом примере, особенно если они были установлены на 500 строк раньше:

Переменная a может быть столбцом на активном листе или строкой в ​​другой книге. Переменная b определенно является булевой, но кто знает, откуда она взялась. Такие экземпляры требуют комментариев (или, что еще лучше, более подробного описания).

Скрывать и показывать столбцы довольно просто.Возможно, единственная немного неинтуитивная часть заключается в том, что мы устанавливаем свойство .Hidden для объектов столбца, а не используем такой метод, как .Hide() для достижения цели.

Скрытие и отображение столбцов с помощью VBA действительно может помочь вашим пользователям визуализировать то, что происходит в сложных электронных таблицах. Это особенно актуально, если столбец результатов находится далеко от входного столбца с несколькими промежуточными «вспомогательными» столбцами. Представьте, что пользователь добавляет ввод в столбец A, и этот ввод объединяется с информацией в столбцах от B до M, и вы не получаете выходных данных до столбца N. Возможно, было бы лучше скрыть столбцы от B до M с помощью вашего макроса, если только кто-то необходимо отредактировать эти поля. Вот когда может пригодиться кнопка-переключатель скрытия/отображения VBA, подобная той, которую мы показали ранее.

Когда вы будете готовы вывести свой VBA на новый уровень, подпишитесь, заполнив форму ниже.

Готовы делать больше с VBA?
Мы собрали гигантский PDF-файл с более чем 300 готовыми макросами и хотим, чтобы вы получили его бесплатно. Введите свой адрес электронной почты ниже, и мы вышлем вам копию вместе с нашим комплектом разработчика VBA, полным советов, приемов и ярлыков VBA.

Прежде чем мы начнем, я хочу сообщить вам, что мы разработали набор шпаргалок по VBA, чтобы вам было проще писать лучшие макросы. Мы включили более 200 советов и 140 примеров макросов, поэтому в них есть все, что вам нужно знать, чтобы стать лучшим программистом VBA.

Эта статья была написана Кори Сарвером, автором статей для блога VBA Tutorials. Посетите его в LinkedIn и на его личной странице.

Как скрыть заголовки строк и столбцов на всех листах?

В Excel мы можем скрыть заголовки строк и столбцов на листе, сняв флажок "Заголовки" на вкладке "Вид", но как можно скрыть заголовки строк и столбцов на всех листах в книге?

За исключением снятия флажков с заголовков на вкладке "Вид" по одному, следующий код VBA может помочь вам скрыть их на всех листах одновременно.

<р>1. Удерживайте клавиши ALT + F11, чтобы открыть окно Microsoft Visual Basic для приложений.

<р>2. Нажмите «Вставить» > «Модуль» и вставьте следующий код в окно модуля.

Код VBA: скрыть заголовки строк и столбцов на всех листах:

<р>3. Затем нажмите клавишу F5, чтобы запустить этот код, и заголовки строк и столбцов на всех листах активной книги будут скрыты одновременно. Смотрите скриншот:

Если у вас есть Kutools for Excel, с его функцией «Параметры просмотра» вы также можете скрыть заголовки строк и столбцов на всех листах.

После установки Kutools for Excel сделайте следующее:

<р>1. Нажмите Kutools > Показать и скрыть > Параметры просмотра, см. снимок экрана:

<р>2. Затем в диалоговом окне «Параметры просмотра» снимите флажок «Заголовки строк и столбцов» в разделе «Параметры окна», а затем нажмите кнопку «Применить ко всем листам», см. снимок экрана:

<р>3. И тогда заголовки строк и столбцов на всех листах будут немедленно скрыты.

Читайте также: