Дата: Понедельник, 22.10.2012, 22:25 |
Сообщение № 1
Группа: Гости
Здравствуйте! Подскажите макрос для отображения/скрытия определенных строк при выборе значения. Т.е. вводишь в ячейку значение 1 - отображаются все строки, если 2 - скрываются строки 2,4,15,20, если 3 - скрываются строки 2,4,15,20,21,25 и так далее. Заранее спасибо. p.s. я так понимаю макрос должен быть написан через "если", но в написании ничего не шарю
Здравствуйте! Подскажите макрос для отображения/скрытия определенных строк при выборе значения. Т.е. вводишь в ячейку значение 1 - отображаются все строки, если 2 - скрываются строки 2,4,15,20, если 3 - скрываются строки 2,4,15,20,21,25 и так далее. Заранее спасибо. p.s. я так понимаю макрос должен быть написан через "если", но в написании ничего не шарюпатрик
Private Sub Worksheet_Change(ByVal Target As Range) Dim el If Target.Address(0, 0) = "A1" Then Application.ScreenUpdating = False Select Case True Case Target.Value = 1: Rows.Hidden = False Case Target.Value = 2: Rows.Hidden = False For Each el In Array(2, 4, 15, 20) Rows(el).Hidden = True Next Case Target.Value = 3: Rows.Hidden = False For Each el In Array(2, 4, 15, 20, 21, 25) Rows(el).Hidden = True Next End Select End If Application.ScreenUpdating = True End Sub
[/vba]
P.S. Что-то я усложнил... Так проще: [vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) Dim el If Target.Address(0, 0) = "A1" Then Application.ScreenUpdating = False Select Case Target Case 1: Rows.Hidden = False Case 2: Rows.Hidden = False For Each el In Array(2, 4, 15, 20) Rows(el).Hidden = True Next Case 3: Rows.Hidden = False For Each el In Array(2, 4, 15, 20, 21, 25) Rows(el).Hidden = True Next End Select End If Application.ScreenUpdating = True End Sub
[/vba]
Как видно по коду - анализируется значение ячейки A1.
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) Dim el If Target.Address(0, 0) = "A1" Then Application.ScreenUpdating = False Select Case True Case Target.Value = 1: Rows.Hidden = False Case Target.Value = 2: Rows.Hidden = False For Each el In Array(2, 4, 15, 20) Rows(el).Hidden = True Next Case Target.Value = 3: Rows.Hidden = False For Each el In Array(2, 4, 15, 20, 21, 25) Rows(el).Hidden = True Next End Select End If Application.ScreenUpdating = True End Sub
[/vba]
P.S. Что-то я усложнил... Так проще: [vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) Dim el If Target.Address(0, 0) = "A1" Then Application.ScreenUpdating = False Select Case Target Case 1: Rows.Hidden = False Case 2: Rows.Hidden = False For Each el In Array(2, 4, 15, 20) Rows(el).Hidden = True Next Case 3: Rows.Hidden = False For Each el In Array(2, 4, 15, 20, 21, 25) Rows(el).Hidden = True Next End Select End If Application.ScreenUpdating = True End Sub
[/vba]
Как видно по коду - анализируется значение ячейки A1.Hugo
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "A1" Then Application.ScreenUpdating = False Rows.Hidden = False Select Case Target Case 2: [2:2,4:4,15:15,20:20].EntireRow.Hidden = True Case 3: [2:2,4:4,15:15,20:21,25:25].EntireRow.Hidden = True End Select End If Application.ScreenUpdating = True End Sub
[/vba] или: [vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "A1" Then Application.ScreenUpdating = False Rows.Hidden = False If Target = 2 Then [2:2,4:4,15:15,20:20].EntireRow.Hidden = True If Target = 3 Then [2:2,4:4,15:15,20:21,25:25].EntireRow.Hidden = True End If Application.ScreenUpdating = True End Sub
[/vba]
Чет ты Игорь перемудрил:-) [vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "A1" Then Application.ScreenUpdating = False Rows.Hidden = False Select Case Target Case 2: [2:2,4:4,15:15,20:20].EntireRow.Hidden = True Case 3: [2:2,4:4,15:15,20:21,25:25].EntireRow.Hidden = True End Select End If Application.ScreenUpdating = True End Sub
[/vba] или: [vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "A1" Then Application.ScreenUpdating = False Rows.Hidden = False If Target = 2 Then [2:2,4:4,15:15,20:20].EntireRow.Hidden = True If Target = 3 Then [2:2,4:4,15:15,20:21,25:25].EntireRow.Hidden = True End If Application.ScreenUpdating = True End Sub
Да что-то не нащупал эти [], а память уже не та очевидно Но на ввод других цифр специально ничего не делал - такого нет в вводной, чтоб на 0 строки открывать
Да что-то не нащупал эти [], а память уже не та очевидно Но на ввод других цифр специально ничего не делал - такого нет в вводной, чтоб на 0 строки открывать Hugo