есть книга с листками. Нужно скрыть/показать некоторые столбцы. для этого можно завести две кнопки "показать подробнее" и "скрыть подробности" (удобство в наглядности, неудобство в необходимости плодить пару кнопок на каждом листе) можно назначить этим макросам горячие клавиши (удобство/неудобство противоположные предыдущему варианту) (был бы рад, если возможно реализовать оба варианта, чтобы попробовать на практике что лучше)
т.к. хотелось бы решить задачу в общем виде, то примера не привожу, а вместо этого ввожу доп.условие отводим первую строку (потом еë скрываем, чтобы не мешалась) в качестве носителя аргументов для макроса (или подпрограммы) в этой строке ячейки могут быть пустыми или непустыми если ячейка непуста, тостолбец, в котором она находится попадает под действие макроса
таким образом, пометив некоторые столбцы мы можем их скрывать или показывать (по нажатию на одну из волшебных кнопок или функциональных клавиш)
это код из упомянутой похожей темы. Но у меня не получилось его модифицировать под описанные условия.
[vba]
Код
Option Explicit Sub скрыть_столбцы() Dim ch, i, k, sh As Variant For Each sh In ThisWorkbook.Worksheets For i = 5 To 16 ch = 5: k = 5 Do While sh.Cells(ch, i) <> "" If sh.Cells(ch, i) = 0 Then k = k + 1 End If ch = ch + 1 Loop If k = ch Then sh.Cells(1, i).EntireColumn.Hidden = True Next i Next End Sub
есть книга с листками. Нужно скрыть/показать некоторые столбцы. для этого можно завести две кнопки "показать подробнее" и "скрыть подробности" (удобство в наглядности, неудобство в необходимости плодить пару кнопок на каждом листе) можно назначить этим макросам горячие клавиши (удобство/неудобство противоположные предыдущему варианту) (был бы рад, если возможно реализовать оба варианта, чтобы попробовать на практике что лучше)
т.к. хотелось бы решить задачу в общем виде, то примера не привожу, а вместо этого ввожу доп.условие отводим первую строку (потом еë скрываем, чтобы не мешалась) в качестве носителя аргументов для макроса (или подпрограммы) в этой строке ячейки могут быть пустыми или непустыми если ячейка непуста, тостолбец, в котором она находится попадает под действие макроса
таким образом, пометив некоторые столбцы мы можем их скрывать или показывать (по нажатию на одну из волшебных кнопок или функциональных клавиш)
это код из упомянутой похожей темы. Но у меня не получилось его модифицировать под описанные условия.
[vba]
Код
Option Explicit Sub скрыть_столбцы() Dim ch, i, k, sh As Variant For Each sh In ThisWorkbook.Worksheets For i = 5 To 16 ch = 5: k = 5 Do While sh.Cells(ch, i) <> "" If sh.Cells(ch, i) = 0 Then k = k + 1 End If ch = ch + 1 Loop If k = ch Then sh.Cells(1, i).EntireColumn.Hidden = True Next i Next End Sub
пометив некоторые столбцы мы можем их скрывать или показывать
Подскажите, как вы хотели помечать скрытые столбцы?
Пробую угадать. Пометить перед скрытием - любую ячейку столбца сделать активной Пометить для показа - выделить ячейки, которые слева и справа от скрытого столбца Коды макросов [vba]
Код
Sub скрыть_столбец() ActiveCell.Columns.EntireColumn.Hidden = True End Sub Sub показать_столбец() Selection.Columns.EntireColumn.Hidden = False Cells(ActiveCell.Row, ActiveCell.Column + 1).Select End Sub
[/vba]
Цитата (карандаш)
пометив некоторые столбцы мы можем их скрывать или показывать
Подскажите, как вы хотели помечать скрытые столбцы?
Пробую угадать. Пометить перед скрытием - любую ячейку столбца сделать активной Пометить для показа - выделить ячейки, которые слева и справа от скрытого столбца Коды макросов [vba]
Код
Sub скрыть_столбец() ActiveCell.Columns.EntireColumn.Hidden = True End Sub Sub показать_столбец() Selection.Columns.EntireColumn.Hidden = False Cells(ActiveCell.Row, ActiveCell.Column + 1).Select End Sub
Насколько я понял, в первую строку в нужные столбцы вводим любой символ и жмем кнопку. Столбцы скрываются. Второй раз жмем кнопку - столбцы показываются. [vba]
Код
Private Sub Cb1_Click() On Error Resume Next rc_ = Rows("1:1").SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants, 23).Count If Err.Number > 0 Then Rows("1:1").SpecialCells(xlCellTypeConstants, 23).EntireColumn.Hidden = False Cb1.Caption = "Съесть" Else Rows("1:1").SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants, 23).EntireColumn.Hidden = True Cb1.Caption = "Выплюнуть" End If Sheets("Лист1").Select On Error GoTo 0 End Sub
[/vba]
Насколько я понял, в первую строку в нужные столбцы вводим любой символ и жмем кнопку. Столбцы скрываются. Второй раз жмем кнопку - столбцы показываются. [vba]
Код
Private Sub Cb1_Click() On Error Resume Next rc_ = Rows("1:1").SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants, 23).Count If Err.Number > 0 Then Rows("1:1").SpecialCells(xlCellTypeConstants, 23).EntireColumn.Hidden = False Cb1.Caption = "Съесть" Else Rows("1:1").SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants, 23).EntireColumn.Hidden = True Cb1.Caption = "Выплюнуть" End If Sheets("Лист1").Select On Error GoTo 0 End Sub
Насколько я понял, в первую строку в нужные столбцы вводим любой символ и жмем кнопку. Столбцы скрываются. Второй раз жмем кнопку - столбцы показываются.
абсолютно точно!!! даже одной кнопкой можно делать! )))
Цитата (_Boroda_)
Насколько я понял, в первую строку в нужные столбцы вводим любой символ и жмем кнопку. Столбцы скрываются. Второй раз жмем кнопку - столбцы показываются.
абсолютно точно!!! даже одной кнопкой можно делать! )))карандаш
Сообщение отредактировал карандаш - Пятница, 08.02.2013, 19:33
ПРОШУ ПРОЩЕНИЯ немного поторопился "режим конструктора" решает вопросы с размером и положением кнопки
но остальные вопросы остались: - можно ли перенести код в общий для книги раздел "Модули" - можно ли управлять наличием/отсутствием кнопки на листе с помощью нехитрых комбинаций с ячейкой А1
===================================
почему не получается назначить макрос Бороды на кнопку, сделанную из вставленной "фигуры" кнопка не видит макроса, хотя он есть
ПРОШУ ПРОЩЕНИЯ немного поторопился "режим конструктора" решает вопросы с размером и положением кнопки
но остальные вопросы остались: - можно ли перенести код в общий для книги раздел "Модули" - можно ли управлять наличием/отсутствием кнопки на листе с помощью нехитрых комбинаций с ячейкой А1
===================================
почему не получается назначить макрос Бороды на кнопку, сделанную из вставленной "фигуры" кнопка не видит макроса, хотя он естькарандаш
Сообщение отредактировал карандаш - Пятница, 08.02.2013, 19:36
и можно ли все таки засунуть кнопку в общий раздел книги потому как кнопка стоит на листе, который создается копированием предыдущего для каждого месяца а кнопка работает для первого. При копировании листа имя листа в макросе не меняется может его совсем убрать?
_Boroda_, с кнопкой разобрался даже после тестирования решил, что удобнее менять не надпись, а цвет фона и шрифта Cb1.BackColor и ForeColor
и можно ли все таки засунуть кнопку в общий раздел книги потому как кнопка стоит на листе, который создается копированием предыдущего для каждого месяца а кнопка работает для первого. При копировании листа имя листа в макросе не меняется может его совсем убрать?карандаш
Сообщение отредактировал карандаш - Пятница, 08.02.2013, 20:36
_Boroda_, про ячейку не зная сокращений, не допер, что такое ПМК да, правой кнопкой мыши работает т.к. это непривычно, а переделать на левую кнопку не смог, то остановился на первоначальном варианте - со "страшной" кнопкой тем более понял как поменять у нее цвета фона и шрифта
======================================= про "страшную" кнопку
убрал имя листа из последней команды - вроде работает, но после нажатия переходит на первый лист вообще убрал строку с командой выбора листа [vba]
Код
Sheets("Лист1").Select
[/vba] все заработало как надо
потеря данной строки вреда не принесет? -------------------------------------------------- аппетит приходит во время... программирования решил дополнить показ/сокрытие второй кнопкой, которая бы выборочно показывала столбцы (анализируя символ в ячейке) (есть столбцы, куда приходится часто заглядывать - это столбцы с рабочей информацией - остальные скрываемые столбцы содержат промежуточную инфу для вычислений и несут исключительно функцию физуального контроля правильности вычислений на протяжении всего этапа вычисления)
подскажите, что нужно изменить в подпрограмме, чтобы действие производилось только со столбцами, которые содержат, например, буковку "b"
_Boroda_, про ячейку не зная сокращений, не допер, что такое ПМК да, правой кнопкой мыши работает т.к. это непривычно, а переделать на левую кнопку не смог, то остановился на первоначальном варианте - со "страшной" кнопкой тем более понял как поменять у нее цвета фона и шрифта
======================================= про "страшную" кнопку
убрал имя листа из последней команды - вроде работает, но после нажатия переходит на первый лист вообще убрал строку с командой выбора листа [vba]
Код
Sheets("Лист1").Select
[/vba] все заработало как надо
потеря данной строки вреда не принесет? -------------------------------------------------- аппетит приходит во время... программирования решил дополнить показ/сокрытие второй кнопкой, которая бы выборочно показывала столбцы (анализируя символ в ячейке) (есть столбцы, куда приходится часто заглядывать - это столбцы с рабочей информацией - остальные скрываемые столбцы содержат промежуточную инфу для вычислений и несут исключительно функцию физуального контроля правильности вычислений на протяжении всего этапа вычисления)
подскажите, что нужно изменить в подпрограмме, чтобы действие производилось только со столбцами, которые содержат, например, буковку "b"карандаш
Сообщение отредактировал карандаш - Суббота, 09.02.2013, 00:21
А может, все проще сделать, вообще без макросов - посмотрите, есть такая штука, "Группировка" называется, живет на вкладке "Данные". Один раз поставить, где нужно и скрывай-показывай что хочешь. Вроде, максимальный уровень вложенности 7, если я правильно помню.
А может, все проще сделать, вообще без макросов - посмотрите, есть такая штука, "Группировка" называется, живет на вкладке "Данные". Один раз поставить, где нужно и скрывай-показывай что хочешь. Вроде, максимальный уровень вложенности 7, если я правильно помню._Boroda_
но чтобы не терять освоенную технологию, подскажите - в том макросе, который написан, 1. как исправить то, что когда скрываешь "сигнальную" строку (с пустыми/непустыми ячейками) он перестает работать - не видит содержимое строки 2. можно переделать этот макрос под конкретную букву?
спасибо
Цитата (_Boroda_)
есть такая штука, "Группировка" называется
гениально! как всë простое )))
но чтобы не терять освоенную технологию, подскажите - в том макросе, который написан, 1. как исправить то, что когда скрываешь "сигнальную" строку (с пустыми/непустыми ячейками) он перестает работать - не видит содержимое строки 2. можно переделать этот макрос под конкретную букву?
пардон (думал, достаточно того, что в этой ветке уже выложен макрос)
вот файл
"под конкретную букву" - это чтобы старый макрос скрывал/показывал все, а новый работал только со столбцами, где в сигнальных ячейках определенная буква
попробуйте скопировать (продублировать) лист скопированный вместе с листом макрос будет так же работать как задумывалось? я от туда удалил строку [vba]
Код
Sheets("Лист1").Select
[/vba]
2. там есть ещë строки с "х" в первом столбце цветные хотелось бы скрывать строки по условию: в первом столбце ячейка непуста + в столбце "К" ячейка <> 0 (тягомотно после копирования постоянно удалять пустые строки)
2.2 а можно сделать кнопку, при нажатии на которую область J11:L21 копировалась в буфер обмена? тогда вообще была бы красота - кликнул на фамилию в верхнем списке, в данной области все просчиталось потом кликнул на кнопку копирования и, пожалуйста тебе, вставляй в другое место готовые, причесанные данные!
p.s. я бы сам сделал (делаю, что получается, в чем начал разбираться), но не до конца понимаю механизм работы некоторых макросов благодаря подсказкам и помощи на этом форуме значительно оптимизировал и сделал универсальным очень много расчетов что очень сильно теперь экономит время и повышает производительность в хелпе такого не прочитаешь, а ту на примерах осваиваешь приемы, которые помогают с минимальными усилиями представлять информацию в удобном наглядном виде
Цитата (_Boroda_)
Так файл-то положите свой
пардон (думал, достаточно того, что в этой ветке уже выложен макрос)
вот файл
"под конкретную букву" - это чтобы старый макрос скрывал/показывал все, а новый работал только со столбцами, где в сигнальных ячейках определенная буква
попробуйте скопировать (продублировать) лист скопированный вместе с листом макрос будет так же работать как задумывалось? я от туда удалил строку [vba]
Код
Sheets("Лист1").Select
[/vba]
2. там есть ещë строки с "х" в первом столбце цветные хотелось бы скрывать строки по условию: в первом столбце ячейка непуста + в столбце "К" ячейка <> 0 (тягомотно после копирования постоянно удалять пустые строки)
2.2 а можно сделать кнопку, при нажатии на которую область J11:L21 копировалась в буфер обмена? тогда вообще была бы красота - кликнул на фамилию в верхнем списке, в данной области все просчиталось потом кликнул на кнопку копирования и, пожалуйста тебе, вставляй в другое место готовые, причесанные данные!
p.s. я бы сам сделал (делаю, что получается, в чем начал разбираться), но не до конца понимаю механизм работы некоторых макросов благодаря подсказкам и помощи на этом форуме значительно оптимизировал и сделал универсальным очень много расчетов что очень сильно теперь экономит время и повышает производительность в хелпе такого не прочитаешь, а ту на примерах осваиваешь приемы, которые помогают с минимальными усилиями представлять информацию в удобном наглядном видекарандаш
Немного измененная концепция. В файле все написал. п. 2 посмотрю дома - сейчас уже бежать пора. Посмотрел. Не понял фразы "кликнул на фамилию в верхнем списке, в данной области все просчиталось". И вообще оба пункта 2 не совсем ясны. Сделать не вопрос, просто уточните, что нужно.
По Вашему пред. посту Sheets("Лист1").Select Конечно убить. Затесался, когда я делал этот макрос сразу для всех листов книги. Потом перечитал ТЗ и понял, что не нужно. Все грохнул, а эту строку забыл.
Дубляж листа - конечно будет работать.
сделал так: По даблклику скрывается/показывается все По правому клику срывается/показывается только "b" Если делать по одинарному левому клику, то плохо получается - чтобы повторить запуск макроса, приходится перещелкиваться на другую ячейку На всякий случай код оставил, но закомментировал (зелененький он такой весь).
Немного измененная концепция. В файле все написал. п. 2 посмотрю дома - сейчас уже бежать пора. Посмотрел. Не понял фразы "кликнул на фамилию в верхнем списке, в данной области все просчиталось". И вообще оба пункта 2 не совсем ясны. Сделать не вопрос, просто уточните, что нужно.
По Вашему пред. посту Sheets("Лист1").Select Конечно убить. Затесался, когда я делал этот макрос сразу для всех листов книги. Потом перечитал ТЗ и понял, что не нужно. Все грохнул, а эту строку забыл.
Дубляж листа - конечно будет работать.
сделал так: По даблклику скрывается/показывается все По правому клику срывается/показывается только "b" Если делать по одинарному левому клику, то плохо получается - чтобы повторить запуск макроса, приходится перещелкиваться на другую ячейку На всякий случай код оставил, но закомментировал (зелененький он такой весь)._Boroda_
Здраствуйте! Простите меня ради Бога! Хотел спросить, и все не решался. Но все таки. У меня в 2003, и, кнопка не работает (не активируется), и щелчок по ячейке тоже ноу, не срабатівает Почему?.
Здраствуйте! Простите меня ради Бога! Хотел спросить, и все не решался. Но все таки. У меня в 2003, и, кнопка не работает (не активируется), и щелчок по ячейке тоже ноу, не срабатівает Почему?.Муля2010
Во специально ради Вас только что поставил себе 2003 офис. Ничего дополнительного не включал. Единственно, что сделал - в Сервис - Макрос - Безопасность - поставил "Средняя" и переоткрыл файл. На вопрос о макросах конечно ответил, что включить. Все работает.
Во специально ради Вас только что поставил себе 2003 офис. Ничего дополнительного не включал. Единственно, что сделал - в Сервис - Макрос - Безопасность - поставил "Средняя" и переоткрыл файл. На вопрос о макросах конечно ответил, что включить. Все работает._Boroda_