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

Вход

Регистрация

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

 

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

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

Excel 2007;Excel 2010
Доброго всем времени суток!!!!! Очередная попытка автоматизировать процесс :D .Попробовал написать при помощи макрорекордера макрос скрытия столбцов. Должны оставаться не скрытыми только столбцы с названием "УП" .Но вот такая конструкция скрывает все столбцы

не оставляя столбцы УП открытыми.Вопрос Почему???
И можно ли сделать критерием НЕскрытия значение из ячейки N5 ?
К сообщению приложен файл: skr.xlsm(40Kb)


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538
 
Ответить
СообщениеДоброго всем времени суток!!!!! Очередная попытка автоматизировать процесс :D .Попробовал написать при помощи макрорекордера макрос скрытия столбцов. Должны оставаться не скрытыми только столбцы с названием "УП" .Но вот такая конструкция скрывает все столбцы

не оставляя столбцы УП открытыми.Вопрос Почему???
И можно ли сделать критерием НЕскрытия значение из ячейки N5 ?

Автор - китин
Дата добавления - 27.04.2016 в 12:07
Manyasha Дата: Среда, 27.04.2016, 12:19 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 1819
Репутация: 751 ±
Замечаний: 0% ±

Excel 2007, 2010
Игорь, здравствуйте, вот так можно:
[vba]
Код
Sub skr()
    Application.ScreenUpdating = False
    For j = 15 To Cells(5, Columns.Count).End(xlToLeft).Column
        If Cells(5, j) <> "УП" Then Columns(j).Hidden = True
    Next j
End Sub
[/vba]
не оставляя столбцы УП открытыми.Вопрос Почему???
в строке 2 есть объединенная ячейка.
Попробуйте выполнить [vba]
Код
Columns("O:S").Select
[/vba] выделятся все столбцы.
К сообщению приложен файл: skr-1.xlsm(40Kb)


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеИгорь, здравствуйте, вот так можно:
[vba]
Код
Sub skr()
    Application.ScreenUpdating = False
    For j = 15 To Cells(5, Columns.Count).End(xlToLeft).Column
        If Cells(5, j) <> "УП" Then Columns(j).Hidden = True
    Next j
End Sub
[/vba]
не оставляя столбцы УП открытыми.Вопрос Почему???
в строке 2 есть объединенная ячейка.
Попробуйте выполнить [vba]
Код
Columns("O:S").Select
[/vba] выделятся все столбцы.

Автор - Manyasha
Дата добавления - 27.04.2016 в 12:19
_Boroda_ Дата: Среда, 27.04.2016, 12:19 | Сообщение № 3
Группа: Модераторы
Ранг: Экселист
Сообщений: 10334
Репутация: 4357 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вариантов куча. Например, вот такой
[vba]
Код
Sub pok()
Columns("N:GA").EntireColumn.Hidden = False
End Sub

Sub skr()
    Dim d_ As Range
    Application.ScreenUpdating = 0
    Set d_ = Range("N5:GA5")
    c_ = d_.Cells.Count
    For i = 1 To c_
        If d_(i) <> "УП" Then
            d_(i).ColumnWidth = 0
        End If
    Next i
End Sub
[/vba]
[p.s.]Избавляйся от Селектов (пример в первом макросе Пок
К сообщению приложен файл: skr_1.xlsm(38Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВариантов куча. Например, вот такой
[vba]
Код
Sub pok()
Columns("N:GA").EntireColumn.Hidden = False
End Sub

Sub skr()
    Dim d_ As Range
    Application.ScreenUpdating = 0
    Set d_ = Range("N5:GA5")
    c_ = d_.Cells.Count
    For i = 1 To c_
        If d_(i) <> "УП" Then
            d_(i).ColumnWidth = 0
        End If
    Next i
End Sub
[/vba]
[p.s.]Избавляйся от Селектов (пример в первом макросе Пок

Автор - _Boroda_
Дата добавления - 27.04.2016 в 12:19
китин Дата: Среда, 27.04.2016, 13:15 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4099
Репутация: 632 ±
Замечаний: 0% ±

Excel 2007;Excel 2010
спасиииибо!!!!
в строке 2 есть объединенная ячейка.

во я баран!!! :'(
а как вот здесь [vba]
Код
If d_(i) <> "УП" Then
[/vba] заменить "УП" на значение ячейки N5 ? тупая замена [vba]
Код
If d_(i) <> N5 Then
[/vba] не прокатила %)


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538
 
Ответить
Сообщениеспасиииибо!!!!
в строке 2 есть объединенная ячейка.

во я баран!!! :'(
а как вот здесь [vba]
Код
If d_(i) <> "УП" Then
[/vba] заменить "УП" на значение ячейки N5 ? тупая замена [vba]
Код
If d_(i) <> N5 Then
[/vba] не прокатила %)

Автор - китин
Дата добавления - 27.04.2016 в 13:15
Manyasha Дата: Среда, 27.04.2016, 13:31 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 1819
Репутация: 751 ±
Замечаний: 0% ±

Excel 2007, 2010
Заменить можно так:
Range("n5") или cells(5, "n") или cells(5, 14) или [n5]
[vba]
Код
If d_(i) <> cells(5, "n") Then
[/vba]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеЗаменить можно так:
Range("n5") или cells(5, "n") или cells(5, 14) или [n5]
[vba]
Код
If d_(i) <> cells(5, "n") Then
[/vba]

Автор - Manyasha
Дата добавления - 27.04.2016 в 13:31
китин Дата: Среда, 27.04.2016, 14:44 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4099
Репутация: 632 ±
Замечаний: 0% ±

Excel 2007;Excel 2010
Спасибо Марина !!!! clap


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538
 
Ответить
СообщениеСпасибо Марина !!!! clap

Автор - китин
Дата добавления - 27.04.2016 в 14:44
_Boroda_ Дата: Среда, 27.04.2016, 16:06 | Сообщение № 7
Группа: Модераторы
Ранг: Экселист
Сообщений: 10334
Репутация: 4357 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Меня почему-то 2,5 часа не пускало на форум, говорило, что прав нет.
во я

Если скрывать столбцы без Селекта, то объединенная ячейка не мешает.
А вообще-то, я бы сделал все на одну кнопку с изменяемым названием (кстати, лучше на кнопку Актив Ч, но, уж если ты начал с кнопкой элементов управления работать, то с ней). Примерно вот так
[vba]
Код
Sub SkrPok()
    Dim d_ As Range
    Application.ScreenUpdating = 0
    Set d_ = Range("O5:GA5")
    If d_(1).ColumnWidth Then
        c_ = d_.Cells.Count
        n_ = Range("N3")
        d_.EntireColumn.Hidden = False
        For i = 1 To c_
            If d_(i) <> n_ Then
                d_(i).ColumnWidth = 0
            End If
        Next i
        ActiveSheet.DrawingObjects("Кнопка 2").Characters.Text = "Показать"
    Else
        d_.EntireColumn.Hidden = False
        ActiveSheet.DrawingObjects("Кнопка 2").Characters.Text = "Скрыть"
    End If
End Sub
[/vba]
К сообщению приложен файл: kr_2.xlsm(39Kb)


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

Если скрывать столбцы без Селекта, то объединенная ячейка не мешает.
А вообще-то, я бы сделал все на одну кнопку с изменяемым названием (кстати, лучше на кнопку Актив Ч, но, уж если ты начал с кнопкой элементов управления работать, то с ней). Примерно вот так
[vba]
Код
Sub SkrPok()
    Dim d_ As Range
    Application.ScreenUpdating = 0
    Set d_ = Range("O5:GA5")
    If d_(1).ColumnWidth Then
        c_ = d_.Cells.Count
        n_ = Range("N3")
        d_.EntireColumn.Hidden = False
        For i = 1 To c_
            If d_(i) <> n_ Then
                d_(i).ColumnWidth = 0
            End If
        Next i
        ActiveSheet.DrawingObjects("Кнопка 2").Characters.Text = "Показать"
    Else
        d_.EntireColumn.Hidden = False
        ActiveSheet.DrawingObjects("Кнопка 2").Characters.Text = "Скрыть"
    End If
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 27.04.2016 в 16:06
китин Дата: Четверг, 28.04.2016, 07:35 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4099
Репутация: 632 ±
Замечаний: 0% ±

Excel 2007;Excel 2010
я бы сделал все на одну кнопку с изменяемым названием

Теперь вопрос КАК ? Кнопку сделал, текст написал. Если СКРЫТЬ то останавливается на [vba]
Код
ActiveSheet.DrawingObjects("Кнопка 2").Characters.Text = "Показать"
[/vba].ну и соответственно наоборот. в формат впихнуть две записи не прокатило


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538


Сообщение отредактировал китин - Четверг, 28.04.2016, 07:39
 
Ответить
Сообщение
я бы сделал все на одну кнопку с изменяемым названием

Теперь вопрос КАК ? Кнопку сделал, текст написал. Если СКРЫТЬ то останавливается на [vba]
Код
ActiveSheet.DrawingObjects("Кнопка 2").Characters.Text = "Показать"
[/vba].ну и соответственно наоборот. в формат впихнуть две записи не прокатило

Автор - китин
Дата добавления - 28.04.2016 в 07:35
_Boroda_ Дата: Четверг, 28.04.2016, 07:50 | Сообщение № 9
Группа: Модераторы
Ранг: Экселист
Сообщений: 10334
Репутация: 4357 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
У тебя скорее всего кнопка называется не "Кнопка 2". Вариантов несколько. Пара самых простых:
1. Если у тебя пока одна кнопка на листе, то можно написать
[vba]
Код
ActiveSheet.DrawingObjects(1).Characters.Text = "Показать"
[/vba]1- это первая кнопка. Последующие будут с индексами 2,3,...
1.1. Если кнопок несколько, то можно узнать индекс нужной, выделив ее и запустив вот это
[vba]
Код
n = Selection.Index
[/vba]
2. А можно выделить кнопку и посмотреть в левый верхний угол - там, левее строки формул, будет написано ее название. Кстати, там можно и переименовать кнопку


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУ тебя скорее всего кнопка называется не "Кнопка 2". Вариантов несколько. Пара самых простых:
1. Если у тебя пока одна кнопка на листе, то можно написать
[vba]
Код
ActiveSheet.DrawingObjects(1).Characters.Text = "Показать"
[/vba]1- это первая кнопка. Последующие будут с индексами 2,3,...
1.1. Если кнопок несколько, то можно узнать индекс нужной, выделив ее и запустив вот это
[vba]
Код
n = Selection.Index
[/vba]
2. А можно выделить кнопку и посмотреть в левый верхний угол - там, левее строки формул, будет написано ее название. Кстати, там можно и переименовать кнопку

Автор - _Boroda_
Дата добавления - 28.04.2016 в 07:50
китин Дата: Четверг, 28.04.2016, 08:25 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4099
Репутация: 632 ±
Замечаний: 0% ±

Excel 2007;Excel 2010
Спасибо Саша. Я тупо в макросе переименовал кнопка 2 в кнопку 1 :D


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538
 
Ответить
СообщениеСпасибо Саша. Я тупо в макросе переименовал кнопка 2 в кнопку 1 :D

Автор - китин
Дата добавления - 28.04.2016 в 08:25
_Boroda_ Дата: Четверг, 28.04.2016, 09:04 | Сообщение № 11
Группа: Модераторы
Ранг: Экселист
Сообщений: 10334
Репутация: 4357 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Да пожалуйста, обращайся, ежели чего.


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

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

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