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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос скрывающий столбцы по условию в ячейке - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос скрывающий столбцы по условию в ячейке (Макросы/Sub)
Макрос скрывающий столбцы по условию в ячейке
Anton85 Дата: Понедельник, 13.06.2016, 21:49 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Пожалуйста помогите написать макрос. Задача макроса скрывать столбцы лист1, в зависимости от содержимого в лист2 ячейка A2.
Если Лист2. A2 = скорость, то скрыть Лист1.C:F
Если Лист2. A2 = сила, то скрыть Лист1.A:B и E:F
Если Лист2. A2 = выносливость, то скрыть Лист1.A:D
К сообщению приложен файл: 11111.xlsx(9Kb)
 
Ответить
СообщениеПожалуйста помогите написать макрос. Задача макроса скрывать столбцы лист1, в зависимости от содержимого в лист2 ячейка A2.
Если Лист2. A2 = скорость, то скрыть Лист1.C:F
Если Лист2. A2 = сила, то скрыть Лист1.A:B и E:F
Если Лист2. A2 = выносливость, то скрыть Лист1.A:D

Автор - Anton85
Дата добавления - 13.06.2016 в 21:49
_Boroda_ Дата: Понедельник, 13.06.2016, 21:59 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 9348
Репутация: 3923 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "A2" Then
        With Sheets("Лист1")
            .Columns("A:F").EntireColumn.Hidden = True
            On Error Resume Next
            c_ = WorksheetFunction.Match(Target, .Rows(1), 0)
            .Columns(c_).Resize(, 2).EntireColumn.Hidden = False
        End With
    End If
End Sub
[/vba]
К сообщению приложен файл: 11111558_1.xlsm(16Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "A2" Then
        With Sheets("Лист1")
            .Columns("A:F").EntireColumn.Hidden = True
            On Error Resume Next
            c_ = WorksheetFunction.Match(Target, .Rows(1), 0)
            .Columns(c_).Resize(, 2).EntireColumn.Hidden = False
        End With
    End If
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 13.06.2016 в 21:59
Anton85 Дата: Вторник, 14.06.2016, 07:00 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Да отлично, спасибо. Только можно активацию по кнопке?
 
Ответить
СообщениеДа отлично, спасибо. Только можно активацию по кнопке?

Автор - Anton85
Дата добавления - 14.06.2016 в 07:00
_Boroda_ Дата: Вторник, 14.06.2016, 07:46 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 9348
Репутация: 3923 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Да не вопрос
К сообщению приложен файл: 11111558_2.xlsm(19Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДа не вопрос

Автор - _Boroda_
Дата добавления - 14.06.2016 в 07:46
Anton85 Дата: Вторник, 14.06.2016, 08:00 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
отлично, спасибо)))))
 
Ответить
Сообщениеотлично, спасибо)))))

Автор - Anton85
Дата добавления - 14.06.2016 в 08:00
Anton85 Дата: Пятница, 17.06.2016, 12:24 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Думал что смогу подогнать макрос под свои задачи, но оказалась что я себя переоценил.... за что и поплатился. Не могли бы вы еще помочь. Скрывать столбцы надо по тому же принципу. Но

Задача макроса скрывать столбцы лист1, в зависимости от содержимого в лист2 ячейка A2.
Если Лист2. A2 = скорость, то скрыть Лист1.K:BA
Если Лист2. A2 = сила, то скрыть Лист1.G:J и M:BA
Если Лист2. A2 = выносливость, то скрыть Лист1.G:L


Сообщение отредактировал Anton85 - Пятница, 17.06.2016, 12:52
 
Ответить
СообщениеДумал что смогу подогнать макрос под свои задачи, но оказалась что я себя переоценил.... за что и поплатился. Не могли бы вы еще помочь. Скрывать столбцы надо по тому же принципу. Но

Задача макроса скрывать столбцы лист1, в зависимости от содержимого в лист2 ячейка A2.
Если Лист2. A2 = скорость, то скрыть Лист1.K:BA
Если Лист2. A2 = сила, то скрыть Лист1.G:J и M:BA
Если Лист2. A2 = выносливость, то скрыть Лист1.G:L

Автор - Anton85
Дата добавления - 17.06.2016 в 12:24
sboy Дата: Пятница, 17.06.2016, 13:24 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 196
Репутация: 48 ±
Замечаний: 0% ±

Excel 2007
Добрый день.
Без файлика как-то так
[vba]
Код

Sub SkrSt()
With Sheets("Лист1")
.Columns("A:BA").EntireColumn.Hidden = False
If Range("A2").Value = "скорость" Then .Range("K:BA").EntireColumn.Hidden = True
If Range("A2").Value = "сила" Then .Range("G:J, M:BA").EntireColumn.Hidden = True
If Range("A2").Value = "выносливость" Then .Range("G:L").EntireColumn.Hidden = True
End With
End Sub
[/vba]
 
Ответить
СообщениеДобрый день.
Без файлика как-то так
[vba]
Код

Sub SkrSt()
With Sheets("Лист1")
.Columns("A:BA").EntireColumn.Hidden = False
If Range("A2").Value = "скорость" Then .Range("K:BA").EntireColumn.Hidden = True
If Range("A2").Value = "сила" Then .Range("G:J, M:BA").EntireColumn.Hidden = True
If Range("A2").Value = "выносливость" Then .Range("G:L").EntireColumn.Hidden = True
End With
End Sub
[/vba]

Автор - sboy
Дата добавления - 17.06.2016 в 13:24
_Boroda_ Дата: Пятница, 17.06.2016, 14:07 | Сообщение № 8
Группа: Модераторы
Ранг: Экселист
Сообщений: 9348
Репутация: 3923 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А зачем всегда 3 раза проверку делать? После первого True дальше не нужно
[vba]
Код
Sub SkrSt1()
    With Sheets("Лист1")
        .Columns("A:BA").EntireColumn.Hidden = False
        If Range("A2").Value = "скорость" Then .Range("K:BA").EntireColumn.Hidden = True: Exit Sub
        If Range("A2").Value = "сила" Then .Range("G:J, M:BA").EntireColumn.Hidden = True: Exit Sub
        If Range("A2").Value = "выносливость" Then .Range("G:L").EntireColumn.Hidden = True
    End With
End Sub
[/vba]
А вообще-то лучше наверное через Case
[vba]
Код
Sub SkrSt()
    With Sheets("Лист1")
        .Columns("A:BA").EntireColumn.Hidden = False
        Select Case Range("A2")
            Case "скорость"
                .Range("K:BA").EntireColumn.Hidden = True
            Case "сила"
                .Range("G:J, M:BA").EntireColumn.Hidden = True
            Case "выносливость"
                .Range("G:L").EntireColumn.Hidden = True
        End Select
    End With
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА зачем всегда 3 раза проверку делать? После первого True дальше не нужно
[vba]
Код
Sub SkrSt1()
    With Sheets("Лист1")
        .Columns("A:BA").EntireColumn.Hidden = False
        If Range("A2").Value = "скорость" Then .Range("K:BA").EntireColumn.Hidden = True: Exit Sub
        If Range("A2").Value = "сила" Then .Range("G:J, M:BA").EntireColumn.Hidden = True: Exit Sub
        If Range("A2").Value = "выносливость" Then .Range("G:L").EntireColumn.Hidden = True
    End With
End Sub
[/vba]
А вообще-то лучше наверное через Case
[vba]
Код
Sub SkrSt()
    With Sheets("Лист1")
        .Columns("A:BA").EntireColumn.Hidden = False
        Select Case Range("A2")
            Case "скорость"
                .Range("K:BA").EntireColumn.Hidden = True
            Case "сила"
                .Range("G:J, M:BA").EntireColumn.Hidden = True
            Case "выносливость"
                .Range("G:L").EntireColumn.Hidden = True
        End Select
    End With
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 17.06.2016 в 14:07
sboy Дата: Пятница, 17.06.2016, 15:11 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 196
Репутация: 48 ±
Замечаний: 0% ±

Excel 2007
А вообще-то лучше наверное через Case


соглашусь yes
 
Ответить
Сообщение
А вообще-то лучше наверное через Case


соглашусь yes

Автор - sboy
Дата добавления - 17.06.2016 в 15:11
Anton85 Дата: Пятница, 17.06.2016, 23:09 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо, все наконец то заработало)))). Выбрал вариант через Case)))
 
Ответить
СообщениеСпасибо, все наконец то заработало)))). Выбрал вариант через Case)))

Автор - Anton85
Дата добавления - 17.06.2016 в 23:09
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос скрывающий столбцы по условию в ячейке (Макросы/Sub)
Страница 1 из 11
Поиск:

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