Как скрыть диапазон в vba excel

Как скрыть или отобразить строки и столбцы с помощью свойства 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
Легко скрыть или отобразить именованный диапазон с помощью Kutools for Excel


Скрыть или отобразить все именованные диапазоны с кодом VBA

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

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

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

VBA: скрыть все именованные диапазоны в Excel

Sub HideNames()
'Update 20140318
Dim xName As Name
For Each xName In Application.ActiveWorkbook.Names
    xName.Visible = False
Next
End Sub

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

Для отображения всех скрытых именованных диапазонов в Excel запустите приведенный ниже код VBA:

VBA: отображение всех именованных диапазонов в Excel

Sub ShowNames()
'Update 20140318
Dim xName As Name
For Each xName In Application.ActiveWorkbook.Names
    xName.Visible = True
Next
End Sub

Легко скрыть или отобразить именованный диапазон с помощью Kutools for Excel

Помимо приведенных выше кодов VBA, здесь я рекомендую Скрыть / показать имя диапазона полезности Kutools for Excel. С помощью этой утилиты вы можете легко скрыть или показать определенные именованные диапазоны в своей книге.

1. Нажмите Кутулс > Инструменты имени > Скрыть / показать имя диапазона. Смотрите скриншот:

2. в Скрыть / показать имя диапазона диалоговое окно, вы можете увидеть, что все именованные диапазоны в вашей книге перечислены в Список имен пунктом.

Вы можете снять флажок с определенного имени диапазона в Список имен поле, чтобы скрыть имя диапазона, или отметьте имя диапазона, чтобы отобразить его в книге. Смотрите скриншот:

Как показано на скриншоте выше, имена диапазонов Добавить_диапазон и Лист1_диапазон будет отображаться в книге, но непроверенные имена диапазонов Новый_диапазон1 и Тест_диапазон будет скрыто. Смотрите скриншот:

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Легко скрыть или отобразить именованный диапазон с помощью Kutools for Excel


Статьи по теме:

  • Как быстро удалить все именованные диапазоны в Excel?
  • Как перечислить именованные диапазоны в Excel?
  • Как создать динамический именованный диапазон в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (1)


Номинальный 5 из 5


·


рейтинги 1

 

gribnick75

Пользователь

Сообщений: 19
Регистрация: 03.10.2019

#1

28.10.2019 16:56:10

Прошу прощения за, возможно, дурацкий вопрос

Есть именованный диапазон строк уровня книги

Код
myrows   - > ='лист1'!$15:$21

Как в vba в макросе листа 2 — скрыть или показать этот диапазон?

 

БМВ

Модератор

Сообщений: 21383
Регистрация: 28.12.2016

Excel 2013, 2016

#2

28.10.2019 17:09:02

Range(«myrows»)

Код
range("Mrows").EntireRow.Hidden=true

Изменено: БМВ28.10.2019 17:25:05

По вопросам из тем форума, личку не читаю.

 

Hellmaster

Пользователь

Сообщений: 208
Регистрация: 26.03.2019

#3

28.10.2019 17:09:57

gribnick75,

Код
sheets("лист1").Rows("15:21").Hidden = True  'скрыть строки
sheets("лист1").Rows("15:21").Hidden = False  'показать строки
 

Hellmaster

Пользователь

Сообщений: 208
Регистрация: 26.03.2019

#4

28.10.2019 17:17:22

Либо вот так

Код
Dim myrows As Range
Set myrows = Sheets("лист1").Range(Rows(15), Rows(21))

а потом уже скрывать или раскрывать

Код
myrows.Hidden = True  'скрыть строки
myrows.Hidden = False  'показать строки
 

БМВ

Модератор

Сообщений: 21383
Регистрация: 28.12.2016

Excel 2013, 2016

#5

28.10.2019 17:27:45

Hellmaster,

Цитата
gribnick75 написал:
Есть именованный диапазон строк уровня книги

!!!

По вопросам из тем форума, личку не читаю.

 

Hellmaster

Пользователь

Сообщений: 208
Регистрация: 26.03.2019

#6

28.10.2019 17:30:02

Цитата
БМВ написал:
range(«Mrows»).EntireRow.Hidden=true
Цитата
Hellmaster написал:
myrows.Hidden = True

а в чем тогда разница?

 

БМВ

Модератор

Сообщений: 21383
Регистрация: 28.12.2016

Excel 2013, 2016

В том что Mrows в одном случае это имя уровня книги, которое определили пользователь «через F3″| , а во втором объект Range. Только и всего.

По вопросам из тем форума, личку не читаю.

 

Тогда прошу прощения за незнание. Можно ссылочку, если не сложно, чтобы я изучил этот момент?

 

БМВ

Модератор

Сообщений: 21383
Регистрация: 28.12.2016

Excel 2013, 2016

Ссылочку на что? На Range Object?

https://docs.microsoft.com/en-us/office/vba/api/excel.range(object)

Пример 3
там правда не упомянуто про такую форму, но именно это и содержится в имени
Range(«Sheet1!10:15»)

Изменено: БМВ28.10.2019 17:46:22

По вопросам из тем форума, личку не читаю.

 

БМВ,таки я не понял тогда. Я ошибся в задании Range, тем что начал с листа, а не с книги или я ошибся в скрытии строк?

 

gribnick75

Пользователь

Сообщений: 19
Регистрация: 03.10.2019

#11

28.10.2019 17:52:49

Цитата
БМВ написал:
Range(«myrows»)

Видимо ошибка у меня где-то в другом

На листе 1 есть макрос следующего вида

Код
Private Sub Worksheet_Change(ByVal Target As Range)
   

   
   
   'Subfloor1_1 - ïðèçíàê èñïîëüçóåì èëè íåò íèæíåå ïåðåêðûòèå
   '
   '
   '
   ''
    Dim isSubfloorHouse As Integer
      
     If Target.Address = Range("Subfloor1_1").Address And Target = Range("Subfloor1_1") Then
          MsgBox (1)
          If Range("Subfloor1_1") = "Да" Then
            isSubfloorHouse = 0
            Range("range_subfloor_house").entryRow.Hidden = True
          Else
            Range("range_subfloor_house").entryRow.Hidden = False
            isSubfloorHouse = 1
          End If
        End If
     
End Sub

range_subfloor_house — задана через f3 для Листа 2   =’Лист2′!$15:$21

При срабатывании идет ошибка

Method Range of object — ‘_Worksheet’ failed

как раз на строках Range(«range_subfloor_house»).entryRows.Hidden = True / False

Изменено: gribnick7528.10.2019 18:19:47

 

Hellmaster

Пользователь

Сообщений: 208
Регистрация: 26.03.2019

#12

28.10.2019 17:56:17

Цитата
gribnick75 написал:
Range(«range_subfloor_house»).entryRows.Hidden = True
Код
entireRow.hidden
 

БМВ

Модератор

Сообщений: 21383
Регистрация: 28.12.2016

Excel 2013, 2016

Область строк определена не 15-21, а задана в имени myrows и может быть другой. моему варианту важно только это имя, что и просил ТС. В вашем случае макрос жестко заточен под номера строк.

По вопросам из тем форума, личку не читаю.

 

gribnick75

Пользователь

Сообщений: 19
Регистрация: 03.10.2019

#14

28.10.2019 17:58:25

Цитата
Hellmaster написал:
entireRow.hidden

поправил уже, результат тот же

 

БМВ, спасибо. Изучу этот момент

 

gribnick75

Пользователь

Сообщений: 19
Регистрация: 03.10.2019

Эх…  дяденьки простите тупицу )))))))))))

face palm
умудрился 2 синтаксические ошибки сделать а не 1

БМВ

— спасибо за помощь

PS тем не менее внутри Sub Worksheet_Change(ByVal Target As Range)  все равно ругается

Пришлось сделать отдельную функцию в модуле и дергать ее.  

Изменено: gribnick7528.10.2019 19:42:14

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#17

28.10.2019 20:03:52

Цитата
gribnick75 написал:
все равно ругается

возможно, надо было так:

Код
Application.Range("range_subfloor_house")

или так:

Код
[range_subfloor_house].Address

или так:

Код
Sheets("Лист2").Range("range_subfloor_house").Address

но с файлом диагностировать причину было бы сподручнее.

Изменено: Дмитрий(The_Prist) Щербаков28.10.2019 20:12:17

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

gribnick75

Пользователь

Сообщений: 19
Регистрация: 03.10.2019

#18

29.10.2019 10:29:21

Цитата
Дмитрий(The_Prist) Щербаков написал:
Application.Range(«range_subfloor_house»)

Так работает, спасибо

Скрыть диапазоны строк по условию ИЛИ 0 и ИЛИ «»

Storm-103

Дата: Пятница, 15.12.2017, 15:38 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Доброго времени суток, уважаемые Гуру!
Требуется ваша профессиональная помощь по написанию скрипта. Суть такова:
Имеется документ Excel с двумя листами «График ТО кусты», в котором собственно находится таблица годового графика, диапазон ячеек с именованным списком «результат». Лист2 — «Акты_ТО-2-3» с Актами ТО в равном количестве объектов из графика первого листа.
Необходимо: скрыть диапазоны строк с Актами, у которых в «результат» «0» или «».
Моих знаний в программировании не достаточно для написания макроса, применив цикл, а тот код, который я применил, он хоть и легкий, но процесс его набивки будет очень долог. Вот этот код:

[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets(«Акты_ТО-2-3»).Range(«ТОк01»).EntireRow.Hidden = (Range(«P5») = 0) Or (Range(«P5») = «») ‘ТОк01 — с именованным списком
Worksheets(«Акты_ТО-2-3»).Range(«ТОк02»).EntireRow.Hidden = (Range(«P6») = 0) Or (Range(«P6») = «»)
‘………………………..
Worksheets(«Акты_ТО-2-3»).Range(«$271:$297»).EntireRow.Hidden = (Range(«P15») = 0) Or (Range(«P15») = «») ‘с диаппазоном
‘………………………..
Worksheets(«Акты_ТО-2-3»).Range(«$406:$432»).EntireRow.Hidden = (Range(«P20») = 0) Or (Range(«P20») = «»)
‘…………………………
End Sub

[/vba]

И таких строк может быть очень много.
Файл для примера я прикрепил, там же есть немного описания.
Заранее спасибо за помощь и отзывчивость.

К сообщению приложен файл:

1098206.xlsx
(97.1 Kb)

Сообщение отредактировал Storm-103Пятница, 15.12.2017, 17:51

 

Ответить

sboy

Дата: Пятница, 15.12.2017, 16:14 |
Сообщение № 2

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2566


Репутация:

724

±

Замечаний:
0% ±


Excel 2010

Добрый день.
Макрос готов, оформите свое сообщение согласно правилам (в режиме правки выделите код макроса и нажмите # на панели редактирования)

[p.s.]ну нет, так нет) я ушел на выходные


Яндекс: 410016850021169

Сообщение отредактировал sboyПятница, 15.12.2017, 16:44

 

Ответить

Storm-103

Дата: Пятница, 15.12.2017, 17:33 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

sboy, добрый вечер, прошу прощение, был без интернета.

Сообщение отредактировал Storm-103Пятница, 15.12.2017, 17:55

 

Ответить

sboy

Дата: Понедельник, 18.12.2017, 09:23 |
Сообщение № 4

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2566


Репутация:

724

±

Замечаний:
0% ±


Excel 2010

Добрый день.
Если структура актов такая же как и в примере, можно скрывать вот таким макросом.
[vba]

Код

Sub hide_()
    arr_ = Sheets(1).Range(«P5:P32»).Value
        With Sheets(2)
            For x = 1 To UBound(arr_)
                Select Case arr_(x, 1)
                    Case 0, «»
                    .Rows(27 * (x — 1) + 1 & «:» & (27 * (x — 1) + 27)).Hidden = True
                End Select
            Next x
        End With
End Sub

[/vba]

К сообщению приложен файл:

1098206.xlsb
(62.1 Kb)


Яндекс: 410016850021169

 

Ответить

Storm-103

Дата: Понедельник, 18.12.2017, 12:30 |
Сообщение № 5

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

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

 

Ответить

sboy

Дата: Понедельник, 18.12.2017, 13:51 |
Сообщение № 6

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2566


Репутация:

724

±

Замечаний:
0% ±


Excel 2010

Ну так я привел код для скрытия. Про обработку изменений и отображения скрытых строк Вы не спрашивали, подумал, что допилите своими силами.
В модуль листа1
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> «$P$4» Then Exit Sub
    Sheets(2).Rows(«1:757»).Hidden = False
    hide_
End Sub

[/vba]

К сообщению приложен файл:

3956368.xlsb
(63.1 Kb)


Яндекс: 410016850021169

 

Ответить

Storm-103

Дата: Понедельник, 18.12.2017, 14:13 |
Сообщение № 7

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

yes Просто нет слов hands
Всё работает согласно желаемому результату!
Спасибо огромное, не первый раз обращаюсь за помощью на ваш сайт.
Вы лучшие.
Буду пробовать усложнять себе задачу дополнительными листами и данными.

Сообщение отредактировал Storm-103Вторник, 19.12.2017, 06:54

 

Ответить

Storm-103

Дата: Вторник, 19.12.2017, 08:57 |
Сообщение № 8

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Доброе утро, уважаемый sboy!
Переборов свою скромность, решил обратиться за помощью еще раз по этой же теме. Можно было бы решить задачу при помощи формул, но макрос выглядит красивее.
Вопрос:
каким образом можно сделать выборку данных с «лист1» и поместить в диапазон на «лист2» по условию?
Цель:
— найти в диапазоне «P5:P32» значение «ТО-1» (лист1);
— из диапазона «В5:В32» (лист1), через запятую скопировать данные в диапазон «Н10:АЕ12» (лист2), при этом текст «Кустовая площадка №» исключить.

Очень рассчитываю на Вашу помощь.

К сообщению приложен файл:

9020763.xlsb
(67.7 Kb)

Сообщение отредактировал Storm-103Вторник, 19.12.2017, 09:33

 

Ответить

Pelena

Дата: Вторник, 19.12.2017, 10:23 |
Сообщение № 9

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Storm-103, этот вопрос не относится к данной теме. Создайте новую


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Довольно часто появляется необходимость в 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

Спасибо за внимание.

How do I hide a range in VBA Excel 2010?

For example i want to hide

range(«A1:A3»)

some help would be appreciated

Chrismas007's user avatar

Chrismas007

6,0654 gold badges23 silver badges47 bronze badges

asked May 2, 2016 at 20:32

John's user avatar

2

1 Answer

You can’t hide a range with these dimensions in Excel. Excel allows hiding complete rows or complete columns, but not just a few cells in a column.

answered May 3, 2016 at 2:51

teylyn's user avatar

teylynteylyn

34.1k4 gold badges52 silver badges72 bronze badges

Hiding is simple, but you need to understand the concept here. To hide the column using VBA, we need to determine which column we need to hide. To specify the column to be hidden, we need to use the RANGE objectRange is a property in VBA that helps specify a particular cell, a range of cells, a row, a column, or a three-dimensional range. In the context of the Excel worksheet, the VBA range object includes a single cell or multiple cells spread across various rows and columns.read more.

Table of contents
  • Excel VBA Hide Columns
    • How to Hide Columns in VBA?
      • Example #1 – Hide using Range Object
      • Example #2 – Hide using Columns Property
      • Example #3 – Hide Multiple Columns
      • Example #4 – Hide Columns with Single Cell
      • Example #5 – Hide Every Alternative Column
      • Example #6 – Hide Every Empty Column
      • Example #7 – Hide Columns Based On Cell Value
    • Recommended Articles
Range("A:A")

Then, we need to use the Property “Entire Column.”

Range("A:A").EntireColumn

We need to use the “Hidden” property in the column property.

Range("A:A").EntireColumn.Hidden

Then, we need to set the Hidden property to TRUE.

Range("A:A").EntireColumn.Hidden = TRUE

It will hide column A.

How to Hide Columns in VBA?

We can hide columns in several ways. We can hide a column using a Range object using the CELLS propertyCells are cells of the worksheet, and in VBA, when we refer to cells as a range property, we refer to the same cells. In VBA concepts, cells are also the same, no different from normal excel cells.read more. We need to construct our VBA codeVBA code refers to a set of instructions written by the user in the Visual Basic Applications programming language on a Visual Basic Editor (VBE) to perform a specific task.read more based on the method we use.

You can download this VBA Hide Columns Excel Template here – VBA Hide Columns Excel Template

Example #1 – Hide using Range Object

If you want to hide a particular column, then specify the column inside the RANGE object. For example, look at the below data.

vba hide column example 1.1

Now, we will hide the entire column A using the following code.

Code:

Sub Range_Hide()

    Range("A:A").EntireColumn.Hidden = True

End Sub

vba hide column example 1.2

So, when we run the code, we will get the following result.

vba hide 1

Example #2 – Hide using Columns Property

If you want to hide the column using the Columns property, then the below code is for you.

Code:

Sub Range_Hide()

    Columns("B").Hidden = True

End Sub

vba hide column example 2.1

It will hide column B. Here, you must be thinking about where the Entire Column property is. When you use the Columns property, it is unnecessary to use the Entire Column property.

We can still use the Entire Column property but not necessarily required. And code for the same is given below.

Code:

Sub Columns_Hide()

    Columns("B").EntireColumn.Hidden = True

End Sub

vba hide column example 2.2

It also should work fine.

We can use the column number as well instead of an alphabetic reference. And code for the same is given below.

Code:

Sub Columns_Hide()

    Columns(4).EntireColumn.Hidden = True

End Sub

vba hide column example 2.3

It will hide Column D.

vba hide 2

Example #3 – Hide Multiple Columns

We can hide multiple columns at a time as well. We need to mention the first and the last column so that in between columns also will be hidden. Using the following code to hide multiple columns for the same data as example #1.

Code:

Sub Columns_Hide()

    Range("A:C").EntireColumn.Hidden = True

End Sub

vba hide column example 3.1

It will hide column A to C.

We can also use the following code to hide multiple columns in Excel VBA.

Code:

Sub Multi_Columns_Hide()

    Columns("A:C").EntireColumn.Hidden = True

End Sub

vba hide column example 3.2

The above methods will hide the first three columns: A, B, and C.

vba hide column example 3.3

Example #4 – Hide Columns with Single Cell

We can also hide a column based on a single cell referenceCell reference in excel is referring the other cells to a cell to use its values or properties. For instance, if we have data in cell A2 and want to use that in cell A1, use =A2 in cell A1, and this will copy the A2 value in A1.read more. We do not need to give the full column reference to hide the column. With just a single cell reference, we should be able to hide a column.

Code:

Sub Single_Hide()

    Range("A5").EntireColumn.Hidden = True

End Sub

vba hide column example 5.3

It will hide the entire column A.

vba hide column example 4.2

Example #5 – Hide Every Alternative Column

Assume you have data, something like the below image.

vba hide column example 5.1

We need to hide every alternative column, which is blank. We need to use loops; the below code will do the job for us.

Code:

Sub AlternativeColumn_Hide()

    Dim k As Integer

    For k = 1 To 7
        Cells(1, k + 1).EntireColumn.Hidden = True
        k = k + 1
    Next k

End Sub

example 5.2

It will hide every alternate column.

5 - GIF

Example #6 – Hide Every Empty Column

In the previous example, every other alternative column was blank. So we have hidden it easily. But look at the below data.

example 6.1

Here, the empty columns pattern is not standard. In these cases, the below code will hide all the empty columns. It does not matter what the pattern is.

Code:

Sub Column_Hide1()

    Dim k As Integer

    For k = 1 To 11
       If Cells(1, k).Value = "" Then
             Columns(k).Hidden = True
       End If
    Next k

End Sub

example 6.2

When you run the code, you will get the result as follows.

example 6.3

Example #7 – Hide Columns Based On Cell Value

Now we will see how to hide columns based on the cell value. For example, look at the below data.

example 7.1

Here, we want to hide all the columns if the heading is “No.” The below code will do it for me.

Code:

Sub Column_Hide_Cell_Value()

    Dim k As Integer

    For k = 1 To 7
        If Cells(1, k).Value = "No" Then
           Columns(k).Hidden = True
        End If
    Next k

End Sub

example 7.2

When you run the code, you will get the result as follows.

7 - GIF

Recommended Articles

This article has been a guide to VBA Hide Columns. Here, we discuss hiding columns in VBA Excel and the practical examples and downloadable Excel sheets. You can learn more about VBA from the following articles: –

  • What is Intersect in Excel VBA?
  • Change Directory in VBA
  • VBA Collections
  • InputBox in VBA

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Как скрыть два столбца в excel
  • Как скрыть данные ячейки в excel
  • Как скрыть данные в столбце excel
  • Как скрыть все нулевые значения в excel
  • Как скрыть все меню в excel

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии