Здравствуйте, помогите написать макрос. Есть книга в которой есть листы их может быть разное количество, на 1 листе из выпадающего списка выбираю значение 1 или 2, на других листах скрываются столбцы при 1 одни, при 2 другие столбцы. Спасибо за помощь.
Здравствуйте, помогите написать макрос. Есть книга в которой есть листы их может быть разное количество, на 1 листе из выпадающего списка выбираю значение 1 или 2, на других листах скрываются столбцы при 1 одни, при 2 другие столбцы. Спасибо за помощь.Serj
Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name <> "Лист1" Then Application.ScreenUpdating = False If Sheets("Лист1").[a2] = 1 Then Columns("a:c").Hidden = True Columns("d:f").Hidden = False Else Columns("a:c").Hidden = False Columns("d:f").Hidden = True End If Application.ScreenUpdating = True End If End Sub
[/vba]
Serj, здравствуйте. Например, так можно: [vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name <> "Лист1" Then Application.ScreenUpdating = False If Sheets("Лист1").[a2] = 1 Then Columns("a:c").Hidden = True Columns("d:f").Hidden = False Else Columns("a:c").Hidden = False Columns("d:f").Hidden = True End If Application.ScreenUpdating = True End If End Sub
Макрос запускается при изменении ячейки "A2" на листе1. На других листах макрос работает со столбцами "A:I". Предполагается, что группа столбцов состоит из 3-х столбцов. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Long, i As Long
If Target.CountLarge <> 1 Then Exit Sub If Intersect(Range("A2"), Target) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
c = Range("A2").Value * 3 - 2
For i = 2 To Worksheets.Count Worksheets(i).Columns("A:I").Hidden = True Worksheets(i).Columns(c).Resize(, 3).Hidden = False Next
Application.ScreenUpdating = True
MsgBox "Готово!", vbInformation
End Sub
[/vba]
Макрос запускается при изменении ячейки "A2" на листе1. На других листах макрос работает со столбцами "A:I". Предполагается, что группа столбцов состоит из 3-х столбцов. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Long, i As Long
If Target.CountLarge <> 1 Then Exit Sub If Intersect(Range("A2"), Target) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
c = Range("A2").Value * 3 - 2
For i = 2 To Worksheets.Count Worksheets(i).Columns("A:I").Hidden = True Worksheets(i).Columns(c).Resize(, 3).Hidden = False Next