Коллеги! Столкнулся с необходимостью построить таблицу, с определенными условиями=возможность скрывать столбцы в зависимости от вводных данных. Суть проблемы попытался отразить во вложении. Попытка использовать найденный мной на форуме МАКРОС в виду моей некомпетентности к успеху не привела.
СПАСИБО.
Вот что нашел...
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) <> "C2" Then Exit Sub Dim r As Range: Set r = Range("C3:H3") Application.ScreenUpdating = False r.EntireColumn.Hidden = True Range(r.Cells(1), r.Cells(Target)).EntireColumn.Hidden = False Application.ScreenUpdating = True End Sub
[/vba]
Коллеги! Столкнулся с необходимостью построить таблицу, с определенными условиями=возможность скрывать столбцы в зависимости от вводных данных. Суть проблемы попытался отразить во вложении. Попытка использовать найденный мной на форуме МАКРОС в виду моей некомпетентности к успеху не привела.
СПАСИБО.
Вот что нашел...
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) <> "C2" Then Exit Sub Dim r As Range: Set r = Range("C3:H3") Application.ScreenUpdating = False r.EntireColumn.Hidden = True Range(r.Cells(1), r.Cells(Target)).EntireColumn.Hidden = False Application.ScreenUpdating = True End Sub
возможность скрывать столбцы в зависимости от вводных данных
Коллега, не из поста, не из примера не понятно чего Вы хотите. Опишите задачу конкретно. Каких данных, куда ВВОДНЫХ, что в итоге должно произойти. А в примере: - вот так есть - вот это вводим - вот эти столбцы должны скрыться. Ибо, телепатов на форуме пока не встречал.
возможность скрывать столбцы в зависимости от вводных данных
Коллега, не из поста, не из примера не понятно чего Вы хотите. Опишите задачу конкретно. Каких данных, куда ВВОДНЫХ, что в итоге должно произойти. А в примере: - вот так есть - вот это вводим - вот эти столбцы должны скрыться. Ибо, телепатов на форуме пока не встречал.Wasilich
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Application.Intersect(Range("A2"), Target) Is Nothing Then Application.EnableEvents = 0: Application.ScreenUpdating = False If Target = "all" Then Columns("B:G").EntireColumn.Hidden = False Else Columns("B:G").EntireColumn.Hidden = True End If If Target = "15" Then Columns("B:E").EntireColumn.Hidden = False If Target = "30" Then Columns("F:G").EntireColumn.Hidden = False Application.EnableEvents = -1: Application.ScreenUpdating = False End If End Sub
[/vba] [moder]Оформляйте коды тегами (кнопка #)[/moder]
Попробовал сам: но ничего не получилось
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Application.Intersect(Range("A2"), Target) Is Nothing Then Application.EnableEvents = 0: Application.ScreenUpdating = False If Target = "all" Then Columns("B:G").EntireColumn.Hidden = False Else Columns("B:G").EntireColumn.Hidden = True End If If Target = "15" Then Columns("B:E").EntireColumn.Hidden = False If Target = "30" Then Columns("F:G").EntireColumn.Hidden = False Application.EnableEvents = -1: Application.ScreenUpdating = False End If End Sub
[/vba] [moder]Оформляйте коды тегами (кнопка #)[/moder]AnatolyZhilichev
Сегодня пытался с помощью макроса http://www.excelworld.ru/forum/10-6525-63572-16-1380816240 решить сою задачу.. Решил с точностью на 50%, так как в макросе (http://www.excelworld.ru/forum/10-6525-63572-16-1380816240) задача с одним условием.., а у меня их 2-а...
AnatolyZhilichev, несколько раз перечитал ваши посты и условия, изложенные в файле. И ничего не понял. Какие столбцы и по каким условиям скрывать? Вы могли бы расписать примерно так: Если в ячейке А1 введено 10 и в ячейке В2 введено 20, то скрываем столбцы с 10 по 20 ?
AnatolyZhilichev, несколько раз перечитал ваши посты и условия, изложенные в файле. И ничего не понял. Какие столбцы и по каким условиям скрывать? Вы могли бы расписать примерно так: Если в ячейке А1 введено 10 и в ячейке В2 введено 20, то скрываем столбцы с 10 по 20 ?SkyPro
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Intersect(Target, Range("A1:A2")) Is Nothing Then Exit Sub Application.ScreenUpdating = False Dim i As Long, j As Long, k As Long Columns("B:S").Hidden = True Columns(2).Resize(, Range("A1").Value * 6).Hidden = False With Range("A2") If .Value <> "all" Then i = IIf(.Value = 15, 6, 2): k = .Value * 2 / 15 For j = 1 To Range("A1").Value Columns(i).Resize(, k).Hidden = True i = i + 6 Next j End If End With Application.ScreenUpdating = True End Sub
[/vba]
Вот так попробуйте [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Intersect(Target, Range("A1:A2")) Is Nothing Then Exit Sub Application.ScreenUpdating = False Dim i As Long, j As Long, k As Long Columns("B:S").Hidden = True Columns(2).Resize(, Range("A1").Value * 6).Hidden = False With Range("A2") If .Value <> "all" Then i = IIf(.Value = 15, 6, 2): k = .Value * 2 / 15 For j = 1 To Range("A1").Value Columns(i).Resize(, k).Hidden = True i = i + 6 Next j End If End With Application.ScreenUpdating = True End Sub
Коллеги, начал редактировать на свое усмотрение, добавил столбцов, и уже голову сломал, не могу догнать, объясните пожвлуйста
Columns(2).Resize(, Range("A1").Value * 6).Hidden = False - а можно пояснить, что такое Range("A1").Value * 6 If .Value <> "all" Then i = IIf(.Value = 15, 6, 2): k = .Value * 2 / 15 - поясните пожалуйста .Value = 15, 6, 2): k = .Value * 2 / 15 For j = 1 To Range("A1").Value Columns(i).Resize(, k).Hidden = True - ну и это мне непонятно i = i + 6
Коллеги, начал редактировать на свое усмотрение, добавил столбцов, и уже голову сломал, не могу догнать, объясните пожвлуйста
Columns(2).Resize(, Range("A1").Value * 6).Hidden = False - а можно пояснить, что такое Range("A1").Value * 6 If .Value <> "all" Then i = IIf(.Value = 15, 6, 2): k = .Value * 2 / 15 - поясните пожалуйста .Value = 15, 6, 2): k = .Value * 2 / 15 For j = 1 To Range("A1").Value Columns(i).Resize(, k).Hidden = True - ну и это мне непонятно i = i + 6AnatolyZhilichev