Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Скрыть столбцы по условию - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Скрыть столбцы по условию (Макросы/Sub)
Скрыть столбцы по условию
Serj Дата: Вторник, 18.10.2016, 22:25 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте, помогите написать макрос. Есть книга в которой есть листы их может быть разное количество, на 1 листе из выпадающего списка выбираю значение 1 или 2, на других листах скрываются столбцы при 1 одни, при 2 другие столбцы. Спасибо за помощь.
К сообщению приложен файл: 123.xls (31.0 Kb)
 
Ответить
СообщениеЗдравствуйте, помогите написать макрос. Есть книга в которой есть листы их может быть разное количество, на 1 листе из выпадающего списка выбираю значение 1 или 2, на других листах скрываются столбцы при 1 одни, при 2 другие столбцы. Спасибо за помощь.

Автор - Serj
Дата добавления - 18.10.2016 в 22:25
Manyasha Дата: Вторник, 18.10.2016, 22:39 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Serj, здравствуйте. Например, так можно:
[vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name <> "Лист1" Then
        Application.ScreenUpdating = False
        If Sheets("Лист1").[a2] = 1 Then
            Columns("a:c").Hidden = True
            Columns("d:f").Hidden = False
        Else
            Columns("a:c").Hidden = False
            Columns("d:f").Hidden = True
        End If
        Application.ScreenUpdating = True
    End If
End Sub
[/vba]
К сообщению приложен файл: 123-1.xls (37.0 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеSerj, здравствуйте. Например, так можно:
[vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name <> "Лист1" Then
        Application.ScreenUpdating = False
        If Sheets("Лист1").[a2] = 1 Then
            Columns("a:c").Hidden = True
            Columns("d:f").Hidden = False
        Else
            Columns("a:c").Hidden = False
            Columns("d:f").Hidden = True
        End If
        Application.ScreenUpdating = True
    End If
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 18.10.2016 в 22:39
Serj Дата: Вторник, 18.10.2016, 23:05 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Большое спасибо за помощь. Есть вопрос, а если выбор сделать из 3 значений, т. е. при 3 скрыть столбцы при значении 1 и 2.
К сообщению приложен файл: 123-2.xls (31.5 Kb)
 
Ответить
СообщениеБольшое спасибо за помощь. Есть вопрос, а если выбор сделать из 3 значений, т. е. при 3 скрыть столбцы при значении 1 и 2.

Автор - Serj
Дата добавления - 18.10.2016 в 23:05
Karataev Дата: Вторник, 18.10.2016, 23:55 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
Макрос запускается при изменении ячейки "A2" на листе1.
На других листах макрос работает со столбцами "A:I". Предполагается, что группа столбцов состоит из 3-х столбцов.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim c As Long, i As Long
    
    If Target.CountLarge <> 1 Then Exit Sub
    If Intersect(Range("A2"), Target) Is Nothing Then Exit Sub
    
    Application.ScreenUpdating = False
    
    c = Range("A2").Value * 3 - 2
    
    For i = 2 To Worksheets.Count
        Worksheets(i).Columns("A:I").Hidden = True
        Worksheets(i).Columns(c).Resize(, 3).Hidden = False
    Next
    
    Application.ScreenUpdating = True
    
    MsgBox "Готово!", vbInformation
    
End Sub
[/vba]
К сообщению приложен файл: 7601952.xls (42.0 Kb)
 
Ответить
СообщениеМакрос запускается при изменении ячейки "A2" на листе1.
На других листах макрос работает со столбцами "A:I". Предполагается, что группа столбцов состоит из 3-х столбцов.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim c As Long, i As Long
    
    If Target.CountLarge <> 1 Then Exit Sub
    If Intersect(Range("A2"), Target) Is Nothing Then Exit Sub
    
    Application.ScreenUpdating = False
    
    c = Range("A2").Value * 3 - 2
    
    For i = 2 To Worksheets.Count
        Worksheets(i).Columns("A:I").Hidden = True
        Worksheets(i).Columns(c).Resize(, 3).Hidden = False
    Next
    
    Application.ScreenUpdating = True
    
    MsgBox "Готово!", vbInformation
    
End Sub
[/vba]

Автор - Karataev
Дата добавления - 18.10.2016 в 23:55
Serj Дата: Среда, 19.10.2016, 00:10 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо за помощь. hands
 
Ответить
СообщениеСпасибо за помощь. hands

Автор - Serj
Дата добавления - 19.10.2016 в 00:10
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Скрыть столбцы по условию (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!