Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2011, 13:29   #1
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию Автоматическое скрытие/отображение столбцов по условию

Здравствуйте уважаемые форумчане.
У меня есть небольшая проблемка, надеюсь Вы сможете помочь ее решить.
И так, в файлике есть таблица свод, мне нужно, что автоматически скрывало и отображало столбцы по условию (если в первой строе, значение ячейки равно нулю, то скрыть этот(и) столбцы.
Я уже открывал такую тему :
http://programmersforum.ru/showthrea...EB%E1%F6%EE%E2
мне очень помогли на тот момент, но столбцы скрывались и отображались только при пересчете формул. Я нашел еще одну тему:
http://programmersforum.ru/showthrea...EB%E1%F6%EE%E2
в которой используется функция
Private Sub Worksheet_Change(ByVal Target As Range)
вот я и решил попросить у знатоков экселя, помочь составить макрос с помощью предыдущей темы (http://programmersforum.ru/showthrea...EB%E1%F6%EE%E2)
Заранее благодарю, тех кто откликнуться
Вложения
Тип файла: rar скрыть,отобразить.rar (269.0 Кб, 68 просмотров)
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 26.07.2011, 16:57   #2
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Может поможете оптимизировать вот этот код, для моего примера:
Код:
Const r = "c3:al3"
Dim x As Range
 'Отобразить все; январь;февраль; март; апрель; май; июнь; июль; август;  сентябрь; октябрь; ноябрь; декабрь

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> [b1].Address Then Exit Sub
    Select Case [b1]
    Case "Отобразить все"
        Range(r).EntireColumn.Hidden = False
    Case ""
        HideColumns
    Case Else
        HideColumns
        Set x = Range(r).Find([b1].Value, , , xlPart, , , False)
        If Not x Is Nothing Then ShowColumns x
    End Select
End Sub

Sub HideColumns()
    Range(r).EntireColumn.Hidden = True
End Sub

Sub ShowColumns(ByRef cell As Range)
    cell.Resize(, 3).EntireColumn.Hidden = False
End Sub
вот к пример этого его работы
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 27.07.2011, 16:28   #3
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Если кому интересно, нашел решение для себя, вот такое:
Код:
Private Sub Worksheet_Activate()
Dim i As Long: Application.ScreenUpdating = False
        For i = 1 To Cells(1, 73).Column
        If Cells(1, i) > 0 Then
            Columns(i).Hidden = False
        Else
            Columns(i).Hidden = True: Columns(i).AutoFit
        End If
    Next
    Application.ScreenUpdating = True
End Sub
Тему можно закрывать. Спасибо
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое скрытие стобцов staniiislav Microsoft Office Excel 6 17.02.2011 16:53
Скрытие строк по условию MaxxVer Microsoft Office Excel 11 09.04.2010 05:55
Автоматическое скрытие ссылок в DLE параметром -hide- nulledzzz WordPress и другие CMS 1 22.12.2009 15:45
Скрытие строк и столбцов Gawwws Microsoft Office Excel 4 19.10.2008 00:02
Скрытие столбцов по условию snake980 Microsoft Office Excel 6 26.02.2008 16:52