Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
19.04.2024, 11:04:59

Войти
На форуме добавлена возможность подписки на RSS-ленты любого раздела форума. Подписаться можно, нажав на иконку RSS , расположенную левее наименования раздела.
33 242 Сообщений в 5 457 Тем от 6 758 Пользователей
Последний пользователь: Сергей2662
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Автоматический процесс скрытия и раскрытиестолбцов в зависимости от значения.
Страниц: [1]   Вниз
Печать
Автор Тема: Автоматический процесс скрытия и раскрытиестолбцов в зависимости от значения.  (Прочитано 2066 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Aleves
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 1


Просмотр профиля
« : 14.02.2020, 19:39:35 »

Здравствуйте,

Имею небольшой опыт в написании формул, однако с VBA столкнулся впервые и нужна определенная функция, а времени на изучение с нуля мало.
Для примера: ячейки на главном листе ссылаются на ячейки в других листах. В ячейках на других листах одно из возможных значений будет "no", которое соответственно будет выводится на главный лист.
Нужно чтобы макрос атоматически скрывал столбцы на главном листе, если значение в исходных ячейках менялось на "no" и раскрывал те столбцы где значение "no" поменялось на какое-либо другое.
Из всех найденных решений не смог найти полностью пдходящее или же просто не знаю, как их совместить (знаний пока не хватает)

Самое близкое из работающих:

Код: (vb)
Sub Hide_Columns_Containing_Value()

   
Dim c As Range

    For Each c In Range("A1:z22").Cells
        If c.Value = "no" Then
            c.EntireColumn.Hidden = True
           End If
Next c
End Sub


но оно просто скрывает столбец при ручном запуске макроса.

Буду признателен если сможете помочь. Заранее спасибо.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #1 : 14.02.2020, 20:26:43 »

Сложно помочь когда нет файл и вообще не ясно где записаны эти "no" и где именно они меняются: на том же листе или на другом...
По сути Вам надо смотреть в сторону событийных процедур листа - здесь чуть подробнее.
По итогу в модуль того листа, где будут меняться "no":
Код: (vb)
Private Sub Worksheet_Change(ByVal Target As Range)
if not intersect(Range("A1:z22"),target) is nothing then
    Dim c As Range
    For Each c In Range("A1:z22").Cells  
        If c.Value = "no" Then  
            c.EntireColumn.Hidden = True  
        End If  
    Next
end if
End Sub

Событие срабатывает только при ручном внесении изменений. Изменения формулами не отслеживаются.
« Последнее редактирование: 14.02.2020, 20:28:49 от Дмитрий Щербаков(The_Prist) » Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru