Добрый день! Помогите, пожалуйста, с макросом. Не смогла переделать, те что попадались на просторах интернета. Если в диапазоне D14:W14 ячейка имеет значение "0", то нужно скрыть столбец, но если данные обновлены и ячейка заполнена, то нужно чтобы столбец был отображен. Макрос нужен на листах 1-31. Если возможно чтобы макрос работал самостоятельно без кнопки. Извините, не нашла как поставить # в создании темы, но попадалось, что это обязательно
Добрый день! Помогите, пожалуйста, с макросом. Не смогла переделать, те что попадались на просторах интернета. Если в диапазоне D14:W14 ячейка имеет значение "0", то нужно скрыть столбец, но если данные обновлены и ячейка заполнена, то нужно чтобы столбец был отображен. Макрос нужен на листах 1-31. Если возможно чтобы макрос работал самостоятельно без кнопки. Извините, не нашла как поставить # в создании темы, но попадалось, что это обязательноСветлана2212
Если в диапазоне D14:W14 ячейка имеет значение "0", то нужно скрыть столбец, но если данные обновлены и ячейка заполнена, то нужно чтобы столбец был отображен
Может имелось ввиду, что столбец будет СГРУППИРОВАН, а не скрыт?
Светлана2212,
Цитата
Если в диапазоне D14:W14 ячейка имеет значение "0", то нужно скрыть столбец, но если данные обновлены и ячейка заполнена, то нужно чтобы столбец был отображен
Может имелось ввиду, что столбец будет СГРУППИРОВАН, а не скрыт?NikitaDvorets
Как будут заполняться ячейки в 14-й строке, если столбец скрыт?
В ячейке А5 пишется день меню, а в строке 14 прописана формула какие блюда подтягивать, если выбрать определенный день. Но в этом файле их нет, т.к. облегчала. Правда она многоэтажная.
Как будут заполняться ячейки в 14-й строке, если столбец скрыт?
В ячейке А5 пишется день меню, а в строке 14 прописана формула какие блюда подтягивать, если выбрать определенный день. Но в этом файле их нет, т.к. облегчала. Правда она многоэтажная.
Private Sub Workbook_SheetActivate(ByVal Sh As Object) a = ActiveSheet.Name If IsNumeric(a) Then If Int(a) = --a Then Columns("D:W").EntireColumn.Hidden = False For Each c In Range("D14:W14") If c.Value = 0 Then Columns(c.Column).EntireColumn.Hidden = True Next End If End If End Sub
[/vba]срабатывает при активации листа
апдэйт - изменение ячейки A5 жеж) [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) a = ActiveSheet.Name b = Target.Address(0, 0) If IsNumeric(a) And b = "A5" Then If Int(a) = --a Then Columns("D:W").EntireColumn.Hidden = False For Each c In Range("D14:W14") If c.Value = 0 Then Columns(c.Column).EntireColumn.Hidden = True Next End If End If End Sub
[/vba]
в модуль книги [vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object) a = ActiveSheet.Name If IsNumeric(a) Then If Int(a) = --a Then Columns("D:W").EntireColumn.Hidden = False For Each c In Range("D14:W14") If c.Value = 0 Then Columns(c.Column).EntireColumn.Hidden = True Next End If End If End Sub
[/vba]срабатывает при активации листа
апдэйт - изменение ячейки A5 жеж) [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) a = ActiveSheet.Name b = Target.Address(0, 0) If IsNumeric(a) And b = "A5" Then If Int(a) = --a Then Columns("D:W").EntireColumn.Hidden = False For Each c In Range("D14:W14") If c.Value = 0 Then Columns(c.Column).EntireColumn.Hidden = True Next End If End If End Sub
Добрый вечер! Вставила макрос через INSERT Module. но теперь посмотреть или подправить не вижу где. Точнее не понимаю, все сделала на ощупь. Сначала не получилось, но сейчас боюсь сглазить работает. Это просто чудо, столько времени экономит. Если возможно помогите с еще одним схожим. Если столбцы F15:AJ15 имеют значение =0, то их скрывать. Но т.к в ячейках AI4:AJ4 и AJ303 имеются данные, которые нужно оставить видимыми (переместить) при сокрытии столбцов. Если не получится, то можно и без перемещения. А за этот макрос огромнейшее спасибо
Добрый вечер! Вставила макрос через INSERT Module. но теперь посмотреть или подправить не вижу где. Точнее не понимаю, все сделала на ощупь. Сначала не получилось, но сейчас боюсь сглазить работает. Это просто чудо, столько времени экономит. Если возможно помогите с еще одним схожим. Если столбцы F15:AJ15 имеют значение =0, то их скрывать. Но т.к в ячейках AI4:AJ4 и AJ303 имеются данные, которые нужно оставить видимыми (переместить) при сокрытии столбцов. Если не получится, то можно и без перемещения. А за этот макрос огромнейшее спасибо Светлана2212
Добрый день! Благодарю за макрос! Это макрос для одного листа. Вчера подготовила исходный файл, почему-то не подкрепился. Исправляюсь. У него должно быть начало и конец ? Его можно только на лист, где он будет работать вставить? Ячейки AI4:AJ4 и AJ303 по этим же строкам на столбец или более ближе к краю таблицы можно переместить.
Добрый день! Благодарю за макрос! Это макрос для одного листа. Вчера подготовила исходный файл, почему-то не подкрепился. Исправляюсь. У него должно быть начало и конец ? Его можно только на лист, где он будет работать вставить? Ячейки AI4:AJ4 и AJ303 по этим же строкам на столбец или более ближе к краю таблицы можно переместить.
Светлана2212, если нет ни какого определенного события листа, макрос в стандартном модуле: [vba]
Код
Sub u_16() a = Evaluate("MAX(IF(F15:AJ15<>0,COLUMN(F15:AJ15)))") b = Application.Match("Форма по ОКУД", Range("a4:ai4"), 0) Range(Cells(4, b), Cells(7, b + 1)).Cut Cells(4, a - 1) Cells(305, b + 1).Cut Cells(305, a) With Columns("F:AJ") .EntireColumn.Hidden = False 'отобразить .ColumnWidth = 7 'ширина столбца End With Columns(a).ColumnWidth = 10 For Each c In Range("F15:AJ15") If c.Value = 0 Then Columns(c.Column).EntireColumn.Hidden = True Next End Sub
[/vba]
Светлана2212, если нет ни какого определенного события листа, макрос в стандартном модуле: [vba]
Код
Sub u_16() a = Evaluate("MAX(IF(F15:AJ15<>0,COLUMN(F15:AJ15)))") b = Application.Match("Форма по ОКУД", Range("a4:ai4"), 0) Range(Cells(4, b), Cells(7, b + 1)).Cut Cells(4, a - 1) Cells(305, b + 1).Cut Cells(305, a) With Columns("F:AJ") .EntireColumn.Hidden = False 'отобразить .ColumnWidth = 7 'ширина столбца End With Columns(a).ColumnWidth = 10 For Each c In Range("F15:AJ15") If c.Value = 0 Then Columns(c.Column).EntireColumn.Hidden = True Next End Sub
Добрый вечер! Попробовала вставить макрос в свою книгу, не работает. А в файле образца тоже все на месте, не скрываются нужные столбцы. Не могу понять что делаю не так
Добрый вечер! Попробовала вставить макрос в свою книгу, не работает. А в файле образца тоже все на месте, не скрываются нужные столбцы. Не могу понять что делаю не так Светлана2212
Сегодня попробовала, макрос работает. Он скрывает столбцы. Только я не учла, что назад скрытые столбцы не вернешь. Я думала, когда суммы станут >=0,00001, таблица обновится и столбцы отобразятся. А еще табличка, ячейка AJ c кодом и датой скрывается с пустым столбцом. Но здесь думаю можно диапазон уменьшить и они просто не будут скрываться. Главный вопрос,как вернуть столбцы, когда есть корректировка. Большое спасибо за ваше время!!!
Nic70y, Добрый день! Я очень сильно извиняюсь, но вчера я видимо все делала не так.
Сегодня попробовала, макрос работает. Он скрывает столбцы. Только я не учла, что назад скрытые столбцы не вернешь. Я думала, когда суммы станут >=0,00001, таблица обновится и столбцы отобразятся. А еще табличка, ячейка AJ c кодом и датой скрывается с пустым столбцом. Но здесь думаю можно диапазон уменьшить и они просто не будут скрываться. Главный вопрос,как вернуть столбцы, когда есть корректировка. Большое спасибо за ваше время!!! Светлана2212
Есть листы с названием 1,2,3,4,5.........31, если ячейка на этих листах F10 >0. то в листе Накопительная F15:AJ15 заполняются ячейки и этот столбец не должен скрываться
Nic70y, добрый вечер! Заново все вставила табличка видна, а слова форма по ОКУД убегают. Да, с AI есть проблемы. Но их (AI;AJ) можно не скрывать.
Есть листы с названием 1,2,3,4,5.........31, если ячейка на этих листах F10 >0. то в листе Накопительная F15:AJ15 заполняются ячейки и этот столбец не должен скрываться Светлана2212
Светлана2212, вариант: событие пересчета листа - Calculate, макрос соот. в модуле этого листа [vba]
Код
Private Sub Worksheet_Calculate() 'максимальный столбец в F15:AJ15, где значения >0 a = Evaluate("MAX(IF(F15:AJ15>0,COLUMN(F15:AJ15)))") '2й наибольший столбец в F15:AJ15, где значения >0 e = Evaluate("LARGE(IF(F15:AJ15>0,COLUMN(F15:AJ15)),2)") 'столбец, где сейчас находится запись Форма по ОКУД b = Application.Match("Форма по ОКУД", Range("a4:ai4"), 0) 'правый крайний столбец, в котором есть значение в строке 4 f = Cells(4, Columns.Count).End(xlToLeft).Column 'если есть хотябы 2 столбца >0, тогда If a > 0 And e > 0 Then 'вырезаем и вставляем Range(Cells(4, f), Cells(7, f)).Cut Cells(4, a) Range(Cells(4, b), Cells(5, b)).Cut Cells(4, e) Cells(305, f).Cut Cells(305, a) End If With Columns("F:AJ") .EntireColumn.Hidden = False 'отобразить .ColumnWidth = 7 'ширина столбца End With Columns(a).ColumnWidth = 10 'скроем нулевые столбцы For Each c In Range("F15:AJ15") If c.Value = 0 Then Columns(c.Column).EntireColumn.Hidden = True Next End Sub
[/vba]
Светлана2212, вариант: событие пересчета листа - Calculate, макрос соот. в модуле этого листа [vba]
Код
Private Sub Worksheet_Calculate() 'максимальный столбец в F15:AJ15, где значения >0 a = Evaluate("MAX(IF(F15:AJ15>0,COLUMN(F15:AJ15)))") '2й наибольший столбец в F15:AJ15, где значения >0 e = Evaluate("LARGE(IF(F15:AJ15>0,COLUMN(F15:AJ15)),2)") 'столбец, где сейчас находится запись Форма по ОКУД b = Application.Match("Форма по ОКУД", Range("a4:ai4"), 0) 'правый крайний столбец, в котором есть значение в строке 4 f = Cells(4, Columns.Count).End(xlToLeft).Column 'если есть хотябы 2 столбца >0, тогда If a > 0 And e > 0 Then 'вырезаем и вставляем Range(Cells(4, f), Cells(7, f)).Cut Cells(4, a) Range(Cells(4, b), Cells(5, b)).Cut Cells(4, e) Cells(305, f).Cut Cells(305, a) End If With Columns("F:AJ") .EntireColumn.Hidden = False 'отобразить .ColumnWidth = 7 'ширина столбца End With Columns(a).ColumnWidth = 10 'скроем нулевые столбцы For Each c In Range("F15:AJ15") If c.Value = 0 Then Columns(c.Column).EntireColumn.Hidden = True Next End Sub
Nic70y, добрый вечер! У меня не получается вставить этот макрос. Вставляю на лист, а как сделать чтобы появилось название не знаю. Из-за этого не могу прицепить его на кнопку. Почему-то все файлы, в которых пробовала сделать этот макрос после работы в них при открытии данные листа не отображают. И некоторые как-будто 2 листа грузят. Показывает по 2 строки со значками отменить, вернуть и т.п. -они с сверху и снизу где значок макроса и масштаба. Продолжу попытки завтра
Nic70y, добрый вечер! У меня не получается вставить этот макрос. Вставляю на лист, а как сделать чтобы появилось название не знаю. Из-за этого не могу прицепить его на кнопку. Почему-то все файлы, в которых пробовала сделать этот макрос после работы в них при открытии данные листа не отображают. И некоторые как-будто 2 листа грузят. Показывает по 2 строки со значками отменить, вернуть и т.п. -они с сверху и снизу где значок макроса и масштаба. Продолжу попытки завтраСветлана2212
Nic70y, Добрый день! Все-таки не смогла одолеть вставку макроса. Смотрю ваш файл у меня вроде также, но видимо не все, т.к. мой не работает. Самое интересное, что после вставки,сохранения, закрытия не отображаются внутренности книги. Т.е. рабочая область листа и все листы книги, расположенные внизу
Nic70y, Добрый день! Все-таки не смогла одолеть вставку макроса. Смотрю ваш файл у меня вроде также, но видимо не все, т.к. мой не работает. Самое интересное, что после вставки,сохранения, закрытия не отображаются внутренности книги. Т.е. рабочая область листа и все листы книги, расположенные внизуСветлана2212